33 changed files with 1811 additions and 123 deletions
@ -0,0 +1,183 @@ |
|||||
|
<template> |
||||
|
<w-card> |
||||
|
<div> |
||||
|
<!-- 查询区域 --> |
||||
|
<div class="table-page-search-wrapper" v-has="'ProductionOrderConfig:query'"> |
||||
|
<w-form layout="inline" @keyup.enter.native="searchQuery"> |
||||
|
<w-row :gutter="10"> |
||||
|
<w-col :xl="5" :lg="5" :md="8" :sm="24"> |
||||
|
<j-dict-select-tag |
||||
|
v-model="queryParam.type" |
||||
|
dict-code="MergerProduceConfigType" |
||||
|
placeholder="请选择类型" |
||||
|
/> |
||||
|
</w-col> |
||||
|
<w-col :xl="5" :lg="5" :md="8" :sm="24"> |
||||
|
<w-input v-model="queryParam.content" placeholder="请输入产品名称或研发分类" /> |
||||
|
</w-col> |
||||
|
|
||||
|
<w-col :xl="5" :lg="5" :md="8" :sm="24"> |
||||
|
<span class="table-page-search-submitButtons"> |
||||
|
<w-button type="primary" @click="searchQuery" icon="search">搜索</w-button> |
||||
|
<w-button type="primary" @click="searchReset">重置</w-button> |
||||
|
<j-super-query :fieldList="refColumns" ref="superQueryModal" @handleSuperQuery="handleSuperQuery" /> |
||||
|
</span> |
||||
|
</w-col> |
||||
|
|
||||
|
<div v-has="'ProductionOrderConfig:export'" class="leftArea"> |
||||
|
<div class="filterBox"> |
||||
|
<span class="iconfont icon-download-2" @click="exportExcel()"></span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</w-row> |
||||
|
</w-form> |
||||
|
</div> |
||||
|
<!-- 查询区域-END --> |
||||
|
|
||||
|
<!-- 操作按钮区域 --> |
||||
|
<div class="table-operator"> |
||||
|
<w-button @click="handleAdd" type="primary" v-has="'ProductionOrderConfig:add'">新增</w-button> |
||||
|
<w-button @click="importModel" type="primary" v-has="'ProductionOrderConfig:import'"> 导入 </w-button> |
||||
|
</div> |
||||
|
<!-- table区域-begin --> |
||||
|
<div> |
||||
|
<w-fit-container elementType="grid" :fitSize="180"> |
||||
|
<a-table |
||||
|
:id="refColumnsKey" |
||||
|
ref="table" |
||||
|
size="middle" |
||||
|
:scroll="getTableScroll(1200)" |
||||
|
bordered |
||||
|
rowKey="id" |
||||
|
:columns="refColumns" |
||||
|
:dataSource="dataSource" |
||||
|
:pagination="ipagination" |
||||
|
:loading="loading" |
||||
|
:customHeaderRow="customHeaderRow" |
||||
|
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" |
||||
|
class="j-table-force-nowrap" |
||||
|
@change="handleTableChange" |
||||
|
:components="resizableComponents" |
||||
|
:customRow="selectRow" |
||||
|
> |
||||
|
<span slot="action" slot-scope="text, record"> |
||||
|
<a @click="handleEdit(record)" v-has="'ProductionOrderConfig:edit'">编辑</a> |
||||
|
|
||||
|
<span v-has="'ProductionOrderConfig:del'"> |
||||
|
<w-divider type="vertical" /> |
||||
|
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> |
||||
|
<a>删除</a> |
||||
|
</a-popconfirm> |
||||
|
</span> |
||||
|
</span> |
||||
|
</a-table> |
||||
|
</w-fit-container> |
||||
|
</div> |
||||
|
</div> |
||||
|
<w-table-columns-win @columnsChange="columnsChange" @resetColumns="resetColumns" ref="choose" :columns="columns" /> |
||||
|
<ProductionOrderConfigListModal ref="modalForm" @ok="modalFormOk" @close="modalFormClose" /> |
||||
|
<excel-export-model ref="excelExport" /> |
||||
|
<excel-import-model ref="importModel" /> |
||||
|
</w-card> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mixinDevice } from '@/utils/mixin'; |
||||
|
import { JeecgListMixin, WGridResizeByCssMixin } from '@/mixins/JeecgListMixin'; |
||||
|
import ProductionOrderConfigListModal from './modules/ProductionOrderConfigListModal'; |
||||
|
import ExcelExportModel from '@/views/excel/modules/ExcelExportModel'; |
||||
|
import ExcelImportModel from '@/views/excel/modules/ExcelImportModel.vue'; |
||||
|
import { getAction } from '@/api/manage'; |
||||
|
|
||||
|
export default { |
||||
|
// 生产单归类规则配置 |
||||
|
name: 'ProductionOrderConfigList', |
||||
|
mixins: [JeecgListMixin, mixinDevice, WGridResizeByCssMixin], |
||||
|
components: { |
||||
|
ProductionOrderConfigListModal, |
||||
|
ExcelExportModel, |
||||
|
ExcelImportModel, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
// 表头 |
||||
|
columns: [ |
||||
|
{ |
||||
|
title: '#', |
||||
|
dataIndex: '', |
||||
|
key: 'rowIndex', |
||||
|
width: 60, |
||||
|
ellipsis: true, |
||||
|
align: 'center', |
||||
|
customRender: function (t, r, index) { |
||||
|
return parseInt(index) + 1; |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
title: '类型', |
||||
|
align: 'center', |
||||
|
width: 200, |
||||
|
ellipsis: true, |
||||
|
dataIndex: 'type_dictText', |
||||
|
}, |
||||
|
{ |
||||
|
title: '产品名称或研发分类', |
||||
|
align: 'center', |
||||
|
width: 200, |
||||
|
ellipsis: true, |
||||
|
dataIndex: 'content', |
||||
|
}, |
||||
|
|
||||
|
{ |
||||
|
title: '备注', |
||||
|
align: 'center', |
||||
|
width: 300, |
||||
|
ellipsis: true, |
||||
|
dataIndex: 'remark', |
||||
|
}, |
||||
|
|
||||
|
{ |
||||
|
title: '操作', |
||||
|
dataIndex: 'action', |
||||
|
align: 'center', |
||||
|
width: 147, |
||||
|
ellipsis: true, |
||||
|
fixed: 'right', |
||||
|
scopedSlots: { customRender: 'action' }, |
||||
|
}, |
||||
|
], |
||||
|
url: { |
||||
|
list: '/merger/merger-produce-config/v1/get-merger-produce-config-by-page', |
||||
|
del: '/merger/merger-produce-config/v1/del', |
||||
|
importEleExcelUrl: '/merger/merger-produce-config/v1/import-excel', |
||||
|
exportXlsUrl: '/merger/merger-produce-config/v1/export-xls', |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
/* 表头的导出 */ |
||||
|
exportExcel() { |
||||
|
const para = this.getQueryParams(); |
||||
|
para.ids = this.selectedRowKeys; |
||||
|
this.$refs.excelExport.show(this.url.exportXlsUrl, para, this.refColumns, 'MERGER_PRODUCE_CONFIG'); |
||||
|
}, |
||||
|
/* 导入 */ |
||||
|
importModel() { |
||||
|
this.$refs.importModel.show(this.url.importEleExcelUrl, 'MERGER_PRODUCE_CONFIG', {}); |
||||
|
}, |
||||
|
handleDelete: function (id) { |
||||
|
const that = this; |
||||
|
getAction(that.url.del, { id: id }).then((res) => { |
||||
|
if (res.success) { |
||||
|
//重新计算分页问题 |
||||
|
that.reCalculatePage(1); |
||||
|
that.$message.success(res.message); |
||||
|
that.loadData(); |
||||
|
} else { |
||||
|
that.$message.warning(res.message); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
@ -0,0 +1,124 @@ |
|||||
|
<template> |
||||
|
<a-spin :spinning="confirmLoading"> |
||||
|
<j-form-container :disabled="formDisabled"> |
||||
|
<w-form ref="form" :model="formData" :rules="validatorRules" slot="detail"> |
||||
|
<w-row> |
||||
|
<w-col :span="24"> |
||||
|
<w-form-item label="类型" prop="type"> |
||||
|
<j-dict-select-tag |
||||
|
v-model="formData.type" |
||||
|
dict-code="MergerProduceConfigType" |
||||
|
placeholder="请选择类型" |
||||
|
v-required-color="true" |
||||
|
/> |
||||
|
</w-form-item> |
||||
|
</w-col> |
||||
|
<w-col :span="24"> |
||||
|
<w-form-item label="产品名称或研发分类" prop="content"> |
||||
|
<w-input |
||||
|
v-model="formData.content" |
||||
|
placeholder="请输入产品名称或研发分类" |
||||
|
:maxLength="500" |
||||
|
v-required-color="true" |
||||
|
/> |
||||
|
</w-form-item> |
||||
|
</w-col> |
||||
|
|
||||
|
<w-col :span="24"> |
||||
|
<w-form-item label="备注" prop="remark"> |
||||
|
<w-input v-model="formData.remark" placeholder="请输入备注" :maxLength="100" /> |
||||
|
</w-form-item> |
||||
|
</w-col> |
||||
|
</w-row> |
||||
|
</w-form> |
||||
|
</j-form-container> |
||||
|
</a-spin> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { httpAction, getAction } from '@/api/manage'; |
||||
|
|
||||
|
export default { |
||||
|
name: 'ProductionOrderConfigListForm', |
||||
|
components: {}, |
||||
|
props: { |
||||
|
//表单禁用 |
||||
|
disabled: { |
||||
|
type: Boolean, |
||||
|
default: false, |
||||
|
required: false, |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
formData: {}, |
||||
|
confirmLoading: false, |
||||
|
validatorRules: { |
||||
|
type: [{ required: true, message: '类型!' }], |
||||
|
content: [{ required: true, message: '产品名称或研发分类!' }], |
||||
|
}, |
||||
|
url: { |
||||
|
add: '/merger/merger-produce-config/v1/add', |
||||
|
update: '/merger/merger-produce-config/v1/update', |
||||
|
queryById: '/merger/merger-produce-config/v1/get-by-id', |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
computed: { |
||||
|
formDisabled() { |
||||
|
return this.disabled; |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
//备份formData原始值 |
||||
|
this.modelDefault = JSON.parse(JSON.stringify(this.formData)); |
||||
|
}, |
||||
|
methods: { |
||||
|
add() { |
||||
|
this.edit(this.modelDefault); |
||||
|
}, |
||||
|
edit(record) { |
||||
|
this.getRecord(record.id); |
||||
|
}, |
||||
|
|
||||
|
submitForm() { |
||||
|
this.$refs.form.validate((valid) => { |
||||
|
if (valid) { |
||||
|
this.confirmLoading = true; |
||||
|
const httpurl = this.formData.id ? this.url.update : this.url.add; |
||||
|
httpAction(httpurl, this.formData, 'post') |
||||
|
.then((res) => { |
||||
|
if (res.success) { |
||||
|
this.$message.success(res.message); |
||||
|
this.$emit('ok'); |
||||
|
} else { |
||||
|
this.$message.error(res.message); |
||||
|
} |
||||
|
}) |
||||
|
.finally(() => { |
||||
|
this.confirmLoading = false; |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
async getRecord(id) { |
||||
|
if (!id) { |
||||
|
return; |
||||
|
} |
||||
|
this.confirmLoading = true; |
||||
|
const res = await getAction(this.url.queryById, { id }); |
||||
|
if (res.success && res.result) { |
||||
|
this.$set(this, 'formData', res.result); |
||||
|
} else { |
||||
|
this.$message.error(res.message); |
||||
|
} |
||||
|
this.confirmLoading = false; |
||||
|
}, |
||||
|
compNoChange(obj) { |
||||
|
this.formData.compName = obj ? obj.name : ''; |
||||
|
this.formData.tenantId = obj ? obj.id : ''; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
@ -0,0 +1,61 @@ |
|||||
|
<template> |
||||
|
<j-modal |
||||
|
:title="title" |
||||
|
:width="width" |
||||
|
:visible="visible" |
||||
|
switchFullscreen |
||||
|
@ok="handleOk" |
||||
|
:okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" |
||||
|
@cancel="handleCancel" |
||||
|
cancelText="关闭" |
||||
|
> |
||||
|
<ProductionOrderConfigListForm ref="realForm" @ok="submitCallback" :disabled="disableSubmit" @close="close" /> |
||||
|
</j-modal> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import ProductionOrderConfigListForm from './ProductionOrderConfigListForm'; |
||||
|
export default { |
||||
|
name: 'ProductionOrderConfigListModal', |
||||
|
components: { |
||||
|
ProductionOrderConfigListForm, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
title: '', |
||||
|
width: 800, |
||||
|
visible: false, |
||||
|
disableSubmit: false, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
add() { |
||||
|
this.visible = true; |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.realForm.add(); |
||||
|
}); |
||||
|
}, |
||||
|
edit(record) { |
||||
|
this.visible = true; |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.realForm.edit(record); |
||||
|
}); |
||||
|
}, |
||||
|
close() { |
||||
|
this.$emit('close'); |
||||
|
this.visible = false; |
||||
|
}, |
||||
|
handleOk() { |
||||
|
this.$refs.realForm.submitForm(); |
||||
|
}, |
||||
|
submitCallback() { |
||||
|
this.$emit('ok'); |
||||
|
this.visible = false; |
||||
|
}, |
||||
|
handleCancel() { |
||||
|
this.close(); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
@ -0,0 +1,39 @@ |
|||||
|
import { postAction } from '@/api/manage'; |
||||
|
import lodash from 'lodash'; |
||||
|
|
||||
|
export const submitClassify = (that, params) => { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
that.$confirm({ |
||||
|
content: '是否确认提交归类?', |
||||
|
onOk: function () { |
||||
|
postAction('/merger/mergerReqsHead/submitMergeAndSplitOrder', { ...params, splitFlag: 0 }).then((res) => { |
||||
|
if (res.success) { |
||||
|
if (!lodash.isEmpty(res.result)) { |
||||
|
that.$confirm({ |
||||
|
content: '是否拆分需求单,并提交已维护完整的料号?', |
||||
|
onOk: function () { |
||||
|
postAction('/merger/mergerReqsHead/submitMergeAndSplitOrder', { ...params, splitFlag: 1 }).then((resData) => { |
||||
|
resolve(resData); |
||||
|
}) |
||||
|
}, |
||||
|
onCancel: function () { |
||||
|
reject(); |
||||
|
} |
||||
|
}); |
||||
|
} else { |
||||
|
resolve(res); |
||||
|
} |
||||
|
} else { |
||||
|
that.$message.warning(res.message); |
||||
|
reject(); |
||||
|
} |
||||
|
}).catch(() => { |
||||
|
reject(); |
||||
|
}) |
||||
|
}, |
||||
|
onCancel: function () { |
||||
|
reject(); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
}; |
||||
@ -0,0 +1,37 @@ |
|||||
|
export default { |
||||
|
columns: [ |
||||
|
{ |
||||
|
title: '序号', |
||||
|
dataIndex: '', |
||||
|
key: 'rowIndex', |
||||
|
width: 60, |
||||
|
align: 'center', |
||||
|
customRender: function (t, r, index) { |
||||
|
return parseInt(index) + 1; |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
title: '附件', |
||||
|
align: 'center', |
||||
|
dataIndex: 'attachment', |
||||
|
ellipsis: true, |
||||
|
width: 150, |
||||
|
scopedSlots: { customRender: 'attachment' }, |
||||
|
}, |
||||
|
{ |
||||
|
title: '要素名称', |
||||
|
align: 'center', |
||||
|
dataIndex: 'elemName', |
||||
|
ellipsis: true, |
||||
|
width: 100, |
||||
|
}, |
||||
|
{ |
||||
|
title: '要素值', |
||||
|
align: 'center', |
||||
|
dataIndex: 'elemValue', |
||||
|
ellipsis: true, |
||||
|
width: 100, |
||||
|
scopedSlots: { customRender: 'elemValue' }, |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,217 @@ |
|||||
|
<template> |
||||
|
<div class="material-dev-classify-attr-comp"> |
||||
|
<div class="small-title"> |
||||
|
<div class="small-title_parent">研发分类要素</div> |
||||
|
<div class="small_label"> |
||||
|
<div class="small_label_title">研发分类:</div> |
||||
|
<div class="small_label_content" :title="rdCategory">{{ rdCategory }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="dev-class-box"> |
||||
|
<a-table ref="table" |
||||
|
id="DevClassify_table_columns_key" |
||||
|
:scroll="{ x: '100%', y: 176 }" |
||||
|
:columns="refColumns" |
||||
|
:data-source="dataSource" |
||||
|
:pagination="false" |
||||
|
:loading="loading" |
||||
|
size="middle" |
||||
|
:row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped' : null)" |
||||
|
bordered |
||||
|
row-key="id" |
||||
|
:components="resizableComponents" |
||||
|
class="j-table-force-nowrap"> |
||||
|
<span slot="attachment" slot-scope="text, record"> |
||||
|
<div v-for="item in record.fileList" :key="item.fileId"> |
||||
|
<template v-if="item.suffix === 'pdf'"> |
||||
|
<a-tooltip placement="top"> |
||||
|
<template slot="title"> |
||||
|
<span>pdf下载</span> |
||||
|
</template> |
||||
|
<a-icon @click="downloadFile(item)" :style="downIconStyle" type="download" /> |
||||
|
</a-tooltip> |
||||
|
<a @click="pdfPreview(item)" :title="item.fileName">{{ item.fileName }}</a> |
||||
|
</template> |
||||
|
|
||||
|
<viewer :images="[currentImgUrl]" v-else-if="['img', 'jpeg', 'png', 'jpg', 'gif', 'tif', 'tiff', 'bmp'].indexOf(item.suffix.toLowerCase()) !== -1 |
||||
|
"> |
||||
|
<a-tooltip placement="top"> |
||||
|
<template slot="title"> |
||||
|
<span>图片下载</span> |
||||
|
</template> |
||||
|
<a-icon @click="downloadFile(item)" :style="downIconStyle" type="download" /> |
||||
|
</a-tooltip> |
||||
|
<img :src="currentImgUrl" :data-preview-title="item.fileName" style="display: none" :title="item.fileName" |
||||
|
:ref="`previewImg_${item.fileId}`" /> |
||||
|
<a @click="triggerPreview(item)" :title="item.fileName">{{ item.fileName }}</a> |
||||
|
</viewer> |
||||
|
<template v-else> |
||||
|
<a-tooltip placement="top"> |
||||
|
<template slot="title"> |
||||
|
<span>文件下载</span> |
||||
|
</template> |
||||
|
<a-icon @click="downloadFile(item)" :style="downIconStyle" type="file-excel" /> |
||||
|
</a-tooltip> |
||||
|
<span>{{ item.fileName }}</span> |
||||
|
</template> |
||||
|
</div> |
||||
|
</span> |
||||
|
<span slot="elemValue" slot-scope="text, record, index"> |
||||
|
<md-select :disabled="true" v-model="record.elemValue" v-if="record.elemType === '2'" style="width: 100%"> |
||||
|
<md-option v-for="(item, key) in record.elemContent.split('|')" :key="key" :value="item" :label="item" |
||||
|
style="padding-right: 8px" /> |
||||
|
</md-select> |
||||
|
<w-input v-else disabled v-model="record.elemValue" maxlength="1000" /> |
||||
|
</span> |
||||
|
</a-table> |
||||
|
</div> |
||||
|
<merger-file-print ref="mergerFilePrint" /> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { downloadFile, getImgUrlWithHeader } from '@/api/manage'; |
||||
|
import { postAction } from '@/api/manage'; |
||||
|
import { JeecgListMixin } from '@/mixins/JeecgListMixin'; |
||||
|
import { mixinDevice } from '@/utils/mixin'; |
||||
|
import MergerFilePrint from '@/views/merger/mergeredConfig/productClassify/modules/MergerFilePrint'; |
||||
|
import config from './config'; |
||||
|
|
||||
|
export default { |
||||
|
name: 'DevClassify', |
||||
|
mixins: [JeecgListMixin, mixinDevice], |
||||
|
components: { MergerFilePrint }, |
||||
|
data() { |
||||
|
return { |
||||
|
rdCategory: '', |
||||
|
currentImgUrl: '', |
||||
|
// 表头 |
||||
|
columns: config.columns, |
||||
|
url: { |
||||
|
list: '/merger/mergerMaterialMaster/v1/get-reqs-elem', |
||||
|
downloadAttrById: '/sys/common/excel/file/download', |
||||
|
downloadFileById: '/merger/mergerGoodsFile/downloadFileById', |
||||
|
}, |
||||
|
superFieldList: [], |
||||
|
initeLoadData: false, // 跳过JeecgListMixin中created里的数据查询 |
||||
|
downIconStyle: 'margin-right: 5px; font-size: 18px; color: #1991a9;cursor:pointer', |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
pdfPreview(item) { |
||||
|
this.$refs.mergerFilePrint.show(item.fileId); |
||||
|
}, |
||||
|
downloadMergerFile(record) { |
||||
|
downloadFile(this.url.downloadFileById, record.fileName, { id: record.id }); |
||||
|
}, |
||||
|
async show(id) { |
||||
|
const res = await postAction( this.url.list, { |
||||
|
id, |
||||
|
}); |
||||
|
if (res && res.code === '0') { |
||||
|
this.rdCategory = res.data.rdCategory; |
||||
|
this.dataSource = res.data.elemList || []; |
||||
|
this.dataSource.forEach((element) => { |
||||
|
element.fileList = JSON.parse(element.fileInfos) || []; |
||||
|
element.fileList.forEach((file) => { |
||||
|
file.suffix = file.fileName.split('.')[file.fileName.split('.').length - 1] || ''; |
||||
|
}); |
||||
|
|
||||
|
element.imgList = element.fileList.filter((item) => |
||||
|
['img', 'jpeg', 'png', 'jpg', 'gif', 'tif', 'tiff', 'bmp'].includes(item.suffix.toLowerCase()) |
||||
|
); |
||||
|
element.noImgList = element.fileList.filter( |
||||
|
(item) => !['img', 'jpeg', 'png', 'jpg', 'gif', 'tif', 'tiff', 'bmp'].includes(item.suffix.toLowerCase()) |
||||
|
); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
/* 下载文件 */ |
||||
|
downloadFile(record) { |
||||
|
downloadFile(this.url.downloadAttrById, record.fileName, { fileId: record.fileId }); |
||||
|
}, |
||||
|
initDictConfig() { }, |
||||
|
async triggerPreview(file) { |
||||
|
// 先检测文件是否存在 |
||||
|
const isExists = await this.checkFileExists(file); |
||||
|
|
||||
|
if (!isExists) { |
||||
|
// 文件不存在,显示警告 |
||||
|
this.$message.warning('文件不存在或无法访问'); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
// 文件存在,触发预览 |
||||
|
const imgRef = this.$refs[`previewImg_${file.fileId}`]?.[0]; |
||||
|
if (imgRef) { |
||||
|
imgRef.click(); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/* 检查文件是否存在 */ |
||||
|
async checkFileExists(file) { |
||||
|
this.currentImgUrl = await getImgUrlWithHeader(file.fileId); |
||||
|
return new Promise((resolve) => { |
||||
|
const img = new Image(); |
||||
|
img.src = this.currentImgUrl; |
||||
|
// 超时设置(3秒) |
||||
|
const timeoutTimer = setTimeout(() => { |
||||
|
resolve(false); |
||||
|
}, 3000); |
||||
|
|
||||
|
// 加载成功 |
||||
|
img.onload = () => { |
||||
|
clearTimeout(timeoutTimer); |
||||
|
resolve(true); |
||||
|
}; |
||||
|
|
||||
|
// 加载失败 |
||||
|
img.onerror = () => { |
||||
|
clearTimeout(timeoutTimer); |
||||
|
resolve(false); |
||||
|
}; |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less"> |
||||
|
.material-dev-classify-attr-comp { |
||||
|
.small-title { |
||||
|
font-size: 12px; |
||||
|
color: grey; |
||||
|
font-weight: 700; |
||||
|
height: 30px; |
||||
|
padding: 6px 16px; |
||||
|
display: flex; |
||||
|
width: 100%; |
||||
|
|
||||
|
.small-title_parent { |
||||
|
min-width: 80px; |
||||
|
} |
||||
|
|
||||
|
.small_label { |
||||
|
flex: 1; |
||||
|
margin-left: 10px; |
||||
|
display: flex; |
||||
|
color: #212b36; |
||||
|
width: 100%; |
||||
|
min-width: 0; |
||||
|
|
||||
|
.small_label_title { |
||||
|
width: 60px; |
||||
|
} |
||||
|
|
||||
|
.small_label_content { |
||||
|
flex: 1; |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
min-width: 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,59 @@ |
|||||
|
/** |
||||
|
* 流程记录弹窗表格配置 |
||||
|
*/ |
||||
|
|
||||
|
// 表格列配置
|
||||
|
export const flowListColumns = [ |
||||
|
{ |
||||
|
title: '#', |
||||
|
dataIndex: '', |
||||
|
key: 'rowIndex', |
||||
|
width: 60, |
||||
|
align: 'center', |
||||
|
customRender: function (t, r, index) { |
||||
|
return parseInt(index) + 1 |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
title: '流程活动', |
||||
|
align: 'center', |
||||
|
dataIndex: 'actionName', |
||||
|
ellipsis: true, |
||||
|
width: 100 |
||||
|
}, |
||||
|
{ |
||||
|
title: '执行人', |
||||
|
align: 'center', |
||||
|
dataIndex: 'createName', |
||||
|
ellipsis: true, |
||||
|
width: 100 |
||||
|
}, |
||||
|
{ |
||||
|
title: '待执行人', |
||||
|
align: 'center', |
||||
|
dataIndex: 'actorId', |
||||
|
ellipsis: true, |
||||
|
width: 100, |
||||
|
}, |
||||
|
{ |
||||
|
title: '执行时间', |
||||
|
align: 'center', |
||||
|
dataIndex: 'createTime', |
||||
|
ellipsis: true, |
||||
|
width: 100 |
||||
|
}, |
||||
|
{ |
||||
|
title: '状态', |
||||
|
align: 'center', |
||||
|
dataIndex: 'taskName', |
||||
|
ellipsis: true, |
||||
|
width: 100 |
||||
|
}, |
||||
|
{ |
||||
|
title: '备注', |
||||
|
align: 'center', |
||||
|
dataIndex: 'remark', |
||||
|
ellipsis: true, |
||||
|
width: 100 |
||||
|
} |
||||
|
] |
||||
@ -0,0 +1,108 @@ |
|||||
|
<template> |
||||
|
<j-modal |
||||
|
:title="title" |
||||
|
:width="1000" |
||||
|
:visible="visible" |
||||
|
:mask-closable="false" |
||||
|
@cancel="handleCancel" |
||||
|
footer> |
||||
|
<a-card> |
||||
|
<div> |
||||
|
<a-table |
||||
|
ref="table" |
||||
|
:id="refColumnsKey" |
||||
|
:scroll="getTableScroll(1000)" |
||||
|
:columns="refColumns" |
||||
|
:data-source="dataSource" |
||||
|
:pagination="ipagination" |
||||
|
:custom-header-row="customHeaderRow" |
||||
|
size="middle" |
||||
|
:loading="loading" |
||||
|
bordered |
||||
|
@change="handleTableChange" |
||||
|
:components="resizableComponents" |
||||
|
row-key="codeTS" |
||||
|
:custom-row="selectRow" |
||||
|
:row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped' : null)" |
||||
|
class="j-table-force-nowrap" |
||||
|
/> |
||||
|
</div> |
||||
|
<w-table-columns-win |
||||
|
ref="choose" |
||||
|
@columnsChange="columnsChange" |
||||
|
@resetColumns="resetColumns" |
||||
|
:columns="columns" |
||||
|
/> |
||||
|
</a-card> |
||||
|
</j-modal> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { JeecgListMixin } from '@/mixins/JeecgListMixin'; |
||||
|
import { postAction } from '@/api/manage'; |
||||
|
import { flowListColumns } from './flowListConfig'; |
||||
|
|
||||
|
export default { |
||||
|
name: 'FlowListModal', |
||||
|
mixins: [JeecgListMixin], |
||||
|
data() { |
||||
|
return { |
||||
|
title: '流程记录', |
||||
|
width: 1200, |
||||
|
visible: false, |
||||
|
loading: false, |
||||
|
initeLoadData: false, |
||||
|
data: [], |
||||
|
// 表头 |
||||
|
columns: flowListColumns, |
||||
|
url: { |
||||
|
list: '/merger/mergerReqsList/v1/query-flow-by-id', |
||||
|
}, |
||||
|
isorter: { |
||||
|
column: 'createTime', |
||||
|
order: 'desc' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
|
||||
|
}, |
||||
|
methods: { |
||||
|
show(params) { |
||||
|
this.visible = true; |
||||
|
this.queryParam.partNo = params.partNo; |
||||
|
this.queryParam.ctryCode = params.ctryCode; |
||||
|
this.loadData(); |
||||
|
}, |
||||
|
handleCancel() { |
||||
|
this.visible = false; |
||||
|
}, |
||||
|
loadData(arg) { |
||||
|
//加载数据 若传入参数1则加载第一页的内容 |
||||
|
if (arg === 1) { |
||||
|
this.ipagination.current = 1; |
||||
|
} |
||||
|
const params = this.getQueryParams(); //查询条件 |
||||
|
this.loading = true; |
||||
|
postAction(this.url.list, params) |
||||
|
.then((res) => { |
||||
|
if (res.success) { |
||||
|
this.dataSource = !res.result ? [] : res.result.records || res.result; |
||||
|
|
||||
|
if (res.result && res.result.total) { |
||||
|
this.ipagination.total = parseInt(res.result.total); |
||||
|
} else { |
||||
|
this.ipagination.total = 0; |
||||
|
} |
||||
|
} else { |
||||
|
this.$message.warning(res.message); |
||||
|
} |
||||
|
}) |
||||
|
.finally(() => { |
||||
|
this.afterLoadData(); |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
@ -0,0 +1,91 @@ |
|||||
|
<template> |
||||
|
<j-modal |
||||
|
:title="title" |
||||
|
:width="width" |
||||
|
:visible="visible" |
||||
|
:ok-button-props="{ class: { 'jee-hidden': true } }" |
||||
|
@cancel="close" |
||||
|
switch-fullscreen |
||||
|
cancel-text="关闭" |
||||
|
> |
||||
|
<w-form ref="form" :model="model"> |
||||
|
<w-row> |
||||
|
<w-col :span="22"> |
||||
|
<w-form-item label="要素采集备注" prop="elementInitRemark"> |
||||
|
<a-textarea v-model="model.elementInitRemark" /> |
||||
|
</w-form-item> |
||||
|
</w-col> |
||||
|
</w-row> |
||||
|
</w-form> |
||||
|
<template slot="footer"> |
||||
|
<w-button @click="close"> 关闭 </w-button> |
||||
|
<w-button :loading="loading" @click="handleOk" type="primary"> 提交 </w-button> |
||||
|
</template> |
||||
|
</j-modal> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { postAction } from '@/api/manage'; |
||||
|
|
||||
|
export default { |
||||
|
name: 'materialRemarkDialog', |
||||
|
components: {}, |
||||
|
data() { |
||||
|
return { |
||||
|
title: '要素采集', |
||||
|
width: 800, |
||||
|
visible: false, |
||||
|
model: { |
||||
|
elementInitRemark: '', |
||||
|
}, |
||||
|
loading: false, |
||||
|
url: { |
||||
|
elementCollection: '/merger/mergerMaterialMaster/v1/element-collection-detail', |
||||
|
}, |
||||
|
modelData: {} |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
show(modelData) { |
||||
|
this.visible = true; |
||||
|
this.modelData = modelData; |
||||
|
}, |
||||
|
handleOk() { |
||||
|
const that = this; |
||||
|
this.$refs.form.validate((valid) => { |
||||
|
if (valid) { |
||||
|
const { id, tickMaterial, tickElement } = this.modelData; |
||||
|
that.loading = true; |
||||
|
postAction( |
||||
|
that.url.elementCollection, |
||||
|
{ |
||||
|
id, |
||||
|
tickMaterial, |
||||
|
tickElement, |
||||
|
elementInitRemark: this.model.elementInitRemark, |
||||
|
} |
||||
|
) |
||||
|
.then((res) => { |
||||
|
if (res && res.code === '0') { |
||||
|
that.$message.success('要素采集成功!'); |
||||
|
that.$emit('ok'); |
||||
|
that.close(); |
||||
|
} else { |
||||
|
that.$message.error(res.message || res.msg); |
||||
|
} |
||||
|
}) |
||||
|
.finally(() => { |
||||
|
that.loading = false; |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
close() { |
||||
|
this.visible = false; |
||||
|
this.loading = false; |
||||
|
this.modelData = ''; |
||||
|
this.$refs.form.resetFields(); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
@ -0,0 +1,42 @@ |
|||||
|
export default { |
||||
|
searchFields: [ |
||||
|
{ |
||||
|
name: '附加编码', |
||||
|
value: 'additionalCode', |
||||
|
type: 'input', |
||||
|
isFixed: true, |
||||
|
span: 3 |
||||
|
}, |
||||
|
{ |
||||
|
name: '语言类别', |
||||
|
value: 'cultureCode', |
||||
|
type: 'select', |
||||
|
optionsKey: 'GLOBAL_TARIFF_LANGUAGE_TYPE', |
||||
|
isFixed: true, |
||||
|
span: 3 |
||||
|
} |
||||
|
], |
||||
|
columns:[ |
||||
|
{ |
||||
|
label: '附加编码', |
||||
|
prop: 'additionalCode', |
||||
|
'width': 130, |
||||
|
}, |
||||
|
{ |
||||
|
label: '附加编码类型', |
||||
|
prop: 'additionalCodeType', |
||||
|
'width': 130, |
||||
|
}, |
||||
|
{ |
||||
|
label: '附加编码说明', |
||||
|
prop: 'codeDescription', |
||||
|
'min-width': 160, |
||||
|
}, |
||||
|
{ |
||||
|
label: '语言类别', |
||||
|
prop: 'cultureCode', |
||||
|
'width': 130, |
||||
|
}, |
||||
|
] |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,158 @@ |
|||||
|
<template> |
||||
|
<md-dialog |
||||
|
:close-on-click-modal="false" |
||||
|
:title="title" |
||||
|
:fullscreen="false" |
||||
|
:visible.sync="dialogVisible" |
||||
|
append-to-body |
||||
|
width="800px" |
||||
|
> <div class="table-page-search-wrapper"> |
||||
|
<w-form @keyup.enter.native="searchQueryHandle" layout="inline"> |
||||
|
<w-row :gutter="10"> |
||||
|
<w-col :span="5" v-for="i in config.searchFields" :key="i.value"> |
||||
|
<w-input v-if="i.type === 'input'" v-model="queryParam[i.value]" :placeholder="i.placeholder || i.name" /> |
||||
|
<md-select v-if="i.type === 'select'" v-model="queryParam[i.value]" :placeholder="i.placeholder || i.name" filterable clearable> |
||||
|
<md-option |
||||
|
v-for="item in optionsData[i.optionsKey] || {}" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</md-option> |
||||
|
</md-select> |
||||
|
</w-col> |
||||
|
<w-col :span="8" style="justify-content:flex-end"> |
||||
|
<span style="float: right; overflow: hidden" class="table-page-search-submitButtons"> |
||||
|
<w-button @click="searchQueryHandle" type="primary" icon="search">查询</w-button> |
||||
|
<w-button @click="searchResetHandle" type="primary" style="margin-left: 8px">重置</w-button> |
||||
|
</span> |
||||
|
</w-col> |
||||
|
</w-row> |
||||
|
</w-form> |
||||
|
</div> |
||||
|
<md-table :data="tableData" border size="mini" style="width: 100%" @row-dblclick="rowDblclick"> |
||||
|
<md-table-column v-for="col in config.columns" :key="col.prop" :prop="col.prop" :label="col.label" v-bind="{ ...$attrs }"></md-table-column> |
||||
|
</md-table> |
||||
|
</md-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { postAction, getAction } from '@/api/manage'; |
||||
|
import config from './additionCode'; |
||||
|
import lodash from 'lodash'; |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
config, |
||||
|
queryParam:{}, |
||||
|
modelData:{}, |
||||
|
tableData:[], |
||||
|
tableDataBackup:[], |
||||
|
dialogVisible: false, |
||||
|
optionsData:{}, |
||||
|
title: '' |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
searchQueryHandle(){ |
||||
|
const { additionalCode, cultureCode } = this.queryParam; |
||||
|
if (additionalCode && isNaN(additionalCode)) { |
||||
|
this.$MdMessage({ |
||||
|
message: '附加编码只能输入数字', |
||||
|
type: 'warning' |
||||
|
}); |
||||
|
return; |
||||
|
} |
||||
|
if (additionalCode && String(additionalCode).length > 6) { |
||||
|
this.$MdMessage({ |
||||
|
message: '附加编码不能超过6位', |
||||
|
type: 'warning' |
||||
|
}); |
||||
|
return; |
||||
|
} |
||||
|
if( additionalCode || cultureCode) { |
||||
|
const filterData = this.tableDataBackup.filter(item => { |
||||
|
// 处理 additionalCode |
||||
|
let additionalCodeMatch = true; |
||||
|
if (!lodash.isEmpty(additionalCode)) { |
||||
|
// 只有当筛选条件有值时才进行匹配 |
||||
|
additionalCodeMatch = item.additionalCode === additionalCode; |
||||
|
} |
||||
|
|
||||
|
// 处理 cultureCode |
||||
|
let cultureCodeMatch = true; |
||||
|
if (!lodash.isEmpty(cultureCode)) { |
||||
|
// 只有当筛选条件有值时才进行匹配 |
||||
|
cultureCodeMatch = item.cultureCode === cultureCode; |
||||
|
} |
||||
|
|
||||
|
return additionalCodeMatch && cultureCodeMatch; |
||||
|
}); |
||||
|
this.tableData = filterData; |
||||
|
} else { |
||||
|
this.tableData = this.tableDataBackup; |
||||
|
} |
||||
|
}, |
||||
|
searchResetHandle(){ |
||||
|
this.queryParam = {}; |
||||
|
this.tableData = this.tableDataBackup; |
||||
|
}, |
||||
|
show({data}){ |
||||
|
if(!data.hsCode){ |
||||
|
this.$message.warning('商品编码不能为空,请维护后重试'); |
||||
|
return; |
||||
|
} |
||||
|
this.queryParam = { |
||||
|
additionalCode: data.additionalCode || '', |
||||
|
cultureCode: 'eng' |
||||
|
} |
||||
|
this.dialogVisible = true; |
||||
|
this.title = data.hsCode + '-附加编码'; |
||||
|
this.modelData = data; |
||||
|
this.$nextTick(()=>{ |
||||
|
this.getDate(); |
||||
|
}) |
||||
|
}, |
||||
|
close(){ |
||||
|
this.dialogVisible = false; |
||||
|
this.tableData = []; |
||||
|
}, |
||||
|
rowDblclick(row){ |
||||
|
this.$emit('confirm', row) |
||||
|
this.close(); |
||||
|
}, |
||||
|
getDate() { |
||||
|
postAction(process.env.VUE_APP_API_BASE_DOMAIN + '/api-iems-cn/base/tariff/additional/code/v1/get-by-page', { |
||||
|
hscode: this.modelData.hsCode || '', |
||||
|
countryCode: this.modelData.country || '', |
||||
|
pageSize: 999 |
||||
|
}).then(res => { |
||||
|
if (res && +res.code === 0) { |
||||
|
this.tableDataBackup = lodash.cloneDeep(res.data.list); |
||||
|
this.searchQueryHandle(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
initDict() { |
||||
|
const keyList = ['GLOBAL_TARIFF_LANGUAGE_TYPE']; |
||||
|
getAction(process.env.VUE_APP_API_BASE_DOMAIN + '/api-it-dc/dictionaryDetail/translateWithTenant', |
||||
|
{ dictCodes: keyList.join(',') } |
||||
|
).then(res => { |
||||
|
if (res && +res.code === 0 && res.data && res.data.GLOBAL_TARIFF_LANGUAGE_TYPE) { |
||||
|
const data = res.data.GLOBAL_TARIFF_LANGUAGE_TYPE; |
||||
|
const list = []; |
||||
|
Object.keys(data).forEach(key => { |
||||
|
list.push({ |
||||
|
label: data[key], |
||||
|
value: key |
||||
|
}) |
||||
|
}); |
||||
|
this.optionsData.GLOBAL_TARIFF_LANGUAGE_TYPE = list; |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initDict() |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
@ -0,0 +1,66 @@ |
|||||
|
<template> |
||||
|
<j-modal class="batch-audit-pass-dialog" :title="title" :width="500" :visible="visible" @cancel="handleCancel"> |
||||
|
<div> |
||||
|
<div class="passLabel"> |
||||
|
处理意见 |
||||
|
</div> |
||||
|
<w-input v-model="remark" type="textarea" :rows="3" /> |
||||
|
</div> |
||||
|
<template slot="footer"> |
||||
|
<w-button @click="handleCancel">取消</w-button> |
||||
|
<w-button type="primary" @click="handleOk">确定</w-button> |
||||
|
</template> |
||||
|
</j-modal> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "batchAuditPassDialog", |
||||
|
data() { |
||||
|
return { |
||||
|
type: '', |
||||
|
visible: false, |
||||
|
title: '', |
||||
|
remark: '同意' |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
show(obj) { |
||||
|
this.type = obj.type; |
||||
|
this.title = obj.title || ''; |
||||
|
this.remark = '同意'; |
||||
|
this.visible = true; |
||||
|
}, |
||||
|
handleCancel() { |
||||
|
this.remark = ''; |
||||
|
this.type = ''; |
||||
|
this.visible = false; |
||||
|
}, |
||||
|
handleOk() { |
||||
|
this.visible = false; |
||||
|
this.$emit('ok', { |
||||
|
remark: this.remark, |
||||
|
type: this.type |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less"> |
||||
|
.batch-audit-pass-dialog { |
||||
|
.ant-modal-content { |
||||
|
.ant-modal-header { |
||||
|
border: none; |
||||
|
} |
||||
|
.ant-modal-body { |
||||
|
min-height: 80px; |
||||
|
padding: 10px 20px; |
||||
|
} |
||||
|
.ant-modal-footer { |
||||
|
border: none; |
||||
|
padding: 10px 20px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,78 @@ |
|||||
|
<template> |
||||
|
<j-modal class="batch-audit-user-dialog" :title="title" :width="500" :visible="visible" @cancel="handleCancel"> |
||||
|
<div> |
||||
|
<div>处理人</div> |
||||
|
|
||||
|
<AppprovalUserSelect |
||||
|
v-model="operator" |
||||
|
@change="getOperator" |
||||
|
/> |
||||
|
</div> |
||||
|
<template slot="footer"> |
||||
|
<w-button @click="handleCancel">取消</w-button> |
||||
|
<w-button type="primary" @click="handleOk">确定</w-button> |
||||
|
</template> |
||||
|
</j-modal> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import AppprovalUserSelect from '@/components/AppprovalUserSelect/index' |
||||
|
export default { |
||||
|
name: "batchAuditUserDialog", |
||||
|
components: { |
||||
|
AppprovalUserSelect |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
visible: false, |
||||
|
title: '选择审批人', |
||||
|
operator: '', |
||||
|
operatorName:'', |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
show() { |
||||
|
this.visible = true; |
||||
|
}, |
||||
|
getOperator(data){ |
||||
|
if (data && data.length > 0) { |
||||
|
this.operatorName = data[0].userName; |
||||
|
} else { |
||||
|
this.operatorName = ''; |
||||
|
} |
||||
|
}, |
||||
|
handleCancel() { |
||||
|
this.visible = false; |
||||
|
}, |
||||
|
handleOk() { |
||||
|
if (!this.operator) { |
||||
|
this.$message.error('处理人必选'); |
||||
|
return false; |
||||
|
} |
||||
|
this.visible = false; |
||||
|
this.$emit('ok', { |
||||
|
operator: this.operator, |
||||
|
operatorName: this.operatorName |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less"> |
||||
|
.batch-audit-user-dialog { |
||||
|
.ant-modal-content { |
||||
|
.ant-modal-header { |
||||
|
border: none; |
||||
|
} |
||||
|
.ant-modal-body { |
||||
|
min-height: 80px; |
||||
|
padding: 10px 20px; |
||||
|
} |
||||
|
.ant-modal-footer { |
||||
|
border: none; |
||||
|
padding: 10px 20px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue