Merge remote-tracking branch 'origin/master'
| | |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1.0"> |
| | | <title>MDCæºæ
§è½¦é´</title> |
| | | <title>åæè½´æ¿æºæ
§è½¦é´</title> |
| | | <link rel="icon" href="<%= BASE_URL %>logo.png"> |
| | | <script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script> |
| | | <style> |
| | |
| | | <div id="loader"></div> |
| | | <div class="loader-section section-left"></div> |
| | | <div class="loader-section section-right"></div> |
| | | <div class="load_title">æ£å¨å è½½MDCæºæ
§è½¦é´,请èå¿çå¾
|
| | | <div class="load_title">æ£å¨å 载系ç»,请èå¿çå¾
|
| | | |
| | | </div> |
| | | </div> |
| | |
| | | * @param title è¦ä¿®æ¹çæ°æ é¢ |
| | | */ |
| | | changeTitle(title) { |
| | | let projectTitle = "MDCæºæ
§è½¦é´" |
| | | let projectTitle = "åæè½´æ¿æºæ
§è½¦é´" |
| | | // é¦é¡µç¹æ®å¤ç |
| | | if (this.$route.path === indexKey) { |
| | | document.title = projectTitle |
| | |
| | | <div class="copyright"> |
| | | Copyright |
| | | <a-icon type="copyright"/> |
| | | 2024 <span>2015-2025 çµç§æºè½</span> |
| | | 2025 <span>2015-2025 çµç§æºè½</span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | props: { |
| | | title: { |
| | | type: String, |
| | | default: 'MDCæºæ
§è½¦é´', |
| | | default: 'MESæºæ
§è½¦é´', |
| | | required: false |
| | | }, |
| | | showTitle: { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-card |
| | | :bordered="false" |
| | | > |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form |
| | | layout="inline" |
| | | @keyup.enter.native="searchQuery" |
| | | > |
| | | <a-row :gutter="30"> |
| | | |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="æå°æºIP"> |
| | | <j-input |
| | | placeholder="请è¾å
¥æå°æºIPæ£ç´¢" |
| | | v-model="queryParam.printerIp " |
| | | ></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">éç½®</a-button> |
| | | </span> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | <div class="table-operator"> |
| | | <a-button |
| | | @click="handleAdd" |
| | | type="primary" |
| | | icon="plus" |
| | | >æ°å¢ |
| | | </a-button> |
| | | </div> |
| | | |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | bordered |
| | | rowKey="id" |
| | | filterMultiple="filterMultiple" |
| | | :columns="columns" |
| | | :rowClassName="tableRowClass" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | @change="handleTableChange" |
| | | > |
| | | <!--ç¶ææ 个æ§å±ç¤º--> |
| | | <span |
| | | slot="status" |
| | | slot-scope="text,record" |
| | | > |
| | | <a-badge |
| | | v-if="record.printerStatus==1" |
| | | status="success" |
| | | /> |
| | | <span |
| | | v-if="record.printerStatus==1" |
| | | class="success" |
| | | >å¯ç¨</span> |
| | | <a-badge |
| | | v-if="record.printerStatus==0" |
| | | status="error" |
| | | /> |
| | | <span |
| | | v-if="record.printerStatus==0" |
| | | class="error" |
| | | >ç¦ç¨</span> |
| | | </span> |
| | | <span |
| | | slot="action" |
| | | slot-scope="text, record" |
| | | > |
| | | <a |
| | | href="javascript:;" |
| | | @click="handleEdit(record)" |
| | | >ç¼è¾</a> |
| | | |
| | | <a-divider type="vertical" /> |
| | | <a-dropdown> |
| | | <a class="ant-dropdown-link">æ´å¤ |
| | | <a-icon type="down" /> |
| | | </a> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item> |
| | | <a @click="handleDetail(record)">详æ
</a> |
| | | </a-menu-item> |
| | | <a-menu-item v-if="record.printerStatus == 0"> |
| | | <a-popconfirm |
| | | title="ç¡®å®å¯ç¨å?" |
| | | @confirm="() => handleActive(record.id)" |
| | | > |
| | | <a>å¯ç¨</a> |
| | | </a-popconfirm> |
| | | </a-menu-item> |
| | | <a-menu-item v-if="record.printerStatus == 1"> |
| | | <a-popconfirm |
| | | title="ç¡®å®ç¦ç¨å?" |
| | | @confirm="() => handleActive(record.id)" |
| | | > |
| | | <a>ç¦ç¨</a> |
| | | </a-popconfirm> |
| | | </a-menu-item> |
| | | <a-menu-item> |
| | | <a-popconfirm |
| | | title="ç¡®å®å é¤å?" |
| | | @confirm="() => handleDelete(record.id)" |
| | | > |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | |
| | | </a-menu-item> |
| | | |
| | | </a-menu> |
| | | </a-dropdown> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | <!-- tableåºå-end --> |
| | | |
| | | <!-- 表ååºå --> |
| | | <printer-config-model |
| | | ref="modalForm" |
| | | @ok="modalFormOk" |
| | | ></printer-config-model> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | //æéå¼å
¥ ç»ä»¶ |
| | | import PrinterConfigModel from './modules/printerConfig/PrinterConfigModel' |
| | | |
| | | import { getAction, requestPut } from '@/api/manage' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import JEllipsis from '@/components/jeecg/JEllipsis' |
| | | import JInput from '@/components/jeecg/JInput' |
| | | |
| | | export default { |
| | | name: 'PrinterConfigList', |
| | | mixins: [JeecgListMixin], |
| | | components: { |
| | | PrinterConfigModel, |
| | | JEllipsis, |
| | | JInput |
| | | }, |
| | | data() { |
| | | return { |
| | | dataSource: [], |
| | | /* å页忰 */ |
| | | ipagination: { |
| | | current: 1, |
| | | pageSize: 10, |
| | | pageSizeOptions: ['10', '20', '30'], |
| | | showTotal: (total, range) => { |
| | | return range[0] + '-' + range[1] + ' å
±' + total + 'æ¡' |
| | | }, |
| | | showQuickJumper: true, |
| | | showSizeChanger: true, |
| | | total: 0 |
| | | }, |
| | | /* æåºåæ° */ |
| | | isorter:{ |
| | | column: 'printerIp', |
| | | order: 'asc', |
| | | }, |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: 'center', |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | } |
| | | }, |
| | | { |
| | | title: 'æå°æºIP', |
| | | align: 'center', |
| | | dataIndex: 'printerIp' |
| | | }, |
| | | { |
| | | title: 'æå°æºåç§°', |
| | | align: 'center', |
| | | dataIndex: 'printerName' |
| | | }, |
| | | { |
| | | title: 'æå°æºç«¯å£', |
| | | align: 'center', |
| | | dataIndex: 'portNumber' |
| | | }, |
| | | { |
| | | title: 'æå°æºåå·', |
| | | align: 'center', |
| | | dataIndex: 'printerModel' |
| | | }, |
| | | { |
| | | width: 100, |
| | | title: 'ç¶æ', |
| | | align: 'center', |
| | | scopedSlots: { |
| | | customRender: 'status' |
| | | }, |
| | | dataIndex: 'printerStatus' |
| | | }, |
| | | { |
| | | width: 150, |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | align: 'center', |
| | | scopedSlots: { customRender: 'action' } |
| | | } |
| | | ], |
| | | url: { |
| | | list: '/base/printerConfig/list', |
| | | delete: '/base/printerConfig/delete', |
| | | active: '/base/printerConfig/active' |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | methods: { |
| | | loadData(arg) { |
| | | if (arg === 1) { |
| | | this.ipagination.current = 1 |
| | | } |
| | | var params = this.getQueryParams()//æ¥è¯¢æ¡ä»¶ |
| | | this.loading = true |
| | | getAction(this.url.list, params).then((res) => { |
| | | if (res.success) { |
| | | this.dataSource = res.result.records |
| | | this.ipagination.total = res.result.total |
| | | } |
| | | if (res.code === 510) { |
| | | this.$message.warning(res.message) |
| | | } |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | //ç¦ç¨ç¶ææ ·å¼ |
| | | tableRowClass(record, index) { |
| | | if (record.printerStatus != '1') { |
| | | return 'frozenRowClass' |
| | | } |
| | | return '' |
| | | }, |
| | | //å¯ç¨ç¦ç¨ |
| | | handleActive(id) { |
| | | if (!this.url.active) { |
| | | this.$message.error('请设置url.active!') |
| | | return |
| | | } |
| | | let that = this |
| | | requestPut(that.url.active, {}, { id: id }).then((res) => { |
| | | if (res.success) { |
| | | that.$message.success(res.message) |
| | | that.loadData() |
| | | } else { |
| | | that.$message.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | <style lang="less" scoped> |
| | | @import '~@assets/less/common.less'; |
| | | |
| | | .frozenRowClass { |
| | | color: #c9c9c9; |
| | | } |
| | | |
| | | .success { |
| | | color: green; |
| | | } |
| | | |
| | | .error { |
| | | color: red; |
| | | } |
| | | |
| | | .fontweight { |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .ant-card-body .table-operator { |
| | | margin-bottom: 18px; |
| | | } |
| | | |
| | | .ant-table-tbody .ant-table-row td { |
| | | padding-top: 15px; |
| | | padding-bottom: 15px; |
| | | } |
| | | |
| | | .anty-row-operator button { |
| | | margin: 0 5px; |
| | | } |
| | | |
| | | /deep/ .ant-btn-danger { |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .ant-modal-cust-warp { |
| | | height: 100%; |
| | | } |
| | | |
| | | .ant-modal-cust-warp .ant-modal-body { |
| | | height: calc(100% - 110px) !important; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .ant-modal-cust-warp .ant-modal-content { |
| | | height: 90% !important; |
| | | overflow-y: hidden; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | :title="title" |
| | | :width="800" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | :maskClosable="false" |
| | | :okButtonProps="{ props: {disabled: disableSubmit} }" |
| | | @ok="handleOk" |
| | | @cancel="handleCancel" |
| | | cancelText="å
³é" |
| | | > |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | <a-form-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | label="æå°æºIP" |
| | | > |
| | | <a-input |
| | | :disabled="disableSubmit" |
| | | allow-clear |
| | | placeholder="请è¾å
¥æå°æºIP" |
| | | v-decorator="['printerIp', validatorRules.printerIp]" |
| | | /> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | <a-form-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | label="æå°æºåç§°" |
| | | > |
| | | <a-input |
| | | :disabled="disableSubmit" |
| | | allow-clear |
| | | placeholder="请è¾å
¥æå°æºç«¯å£" |
| | | v-decorator="['printerName', validatorRules.printerName]" |
| | | /> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | <a-form-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | label="æå°æºç«¯å£" |
| | | > |
| | | <a-input |
| | | :disabled="disableSubmit" |
| | | allow-clear |
| | | placeholder="请è¾å
¥æå°æºç«¯å£" |
| | | v-decorator="['portNumber', validatorRules.portNumber]" |
| | | /> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | <a-form-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | label="æå°æºåå·" |
| | | > |
| | | <a-input |
| | | :disabled="disableSubmit" |
| | | allow-clear |
| | | placeholder="请è¾å
¥æå°æºåå·" |
| | | v-decorator="['printerModel', validatorRules.printerModel]" |
| | | /> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import { httpAction } from '@/api/manage' |
| | | import pick from 'lodash.pick' |
| | | import { duplicateCheck } from '@/api/api' //é夿 ¡éª |
| | | |
| | | export default { |
| | | name: 'PrinterConfigModel', |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | title: 'æä½', |
| | | visible: false, |
| | | disableSubmit: false, |
| | | model: {}, |
| | | treeData: [], |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 } |
| | | }, |
| | | |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this), |
| | | validatorRules: { |
| | | printerIp: { |
| | | rules: [ |
| | | { required: true, message: '请è¾å
¥æå°æºIP' }, |
| | | { min: 2, max: 30, message: 'é¿åº¦å¨ 2 å° 30 个å符', trigger: 'blur' }, |
| | | ] |
| | | }, |
| | | printerName: { |
| | | rules: [ |
| | | { required: true, message: '请è¾å
¥æå°æºåç§°' }, |
| | | { min: 2, max: 30, message: 'é¿åº¦å¨ 2 å° 30 个å符', trigger: 'blur' }, |
| | | ] |
| | | }, |
| | | portNumber: { |
| | | rules: [ |
| | | { required: true, message: '请è¾å
¥æå°æºç«¯å£' }, |
| | | { min: 0, max: 64, message: 'é¿åº¦ä¸è¶
è¿ 64 个å符', trigger: 'blur' }, |
| | | { validator: this.validateName } |
| | | ] |
| | | }, |
| | | |
| | | printerModel: { |
| | | rules: [ |
| | | { required: true, message: '请è¾å
¥æå°æºåå·' }, |
| | | { min: 0, max: 64, message: 'é¿åº¦ä¸è¶
è¿ 64 个å符', trigger: 'blur' } |
| | | ] |
| | | } |
| | | }, |
| | | url: { |
| | | add: '/base/printerConfig/add', |
| | | edit: '/base/printerConfig/edit' |
| | | }, |
| | | nextFactoryOptions: [] |
| | | } |
| | | }, |
| | | |
| | | |
| | | created() { |
| | | }, |
| | | methods: { |
| | | add() { |
| | | this.edit({}) |
| | | }, |
| | | edit(record) { |
| | | this.form.resetFields() |
| | | this.model = Object.assign({}, record) |
| | | this.warehouseId = record.id |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | this.form.setFieldsValue( |
| | | pick(this.model, 'printerIp','printerName', 'portNumber', 'printerModel') |
| | | ) |
| | | }) |
| | | }, |
| | | close() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | }, |
| | | handleOk() { |
| | | console.log('表åå¼:', this.form.getFieldsValue()) |
| | | const that = this |
| | | // 触å表åéªè¯ |
| | | this.form.validateFields((err, values) => { |
| | | if (!err) { |
| | | that.confirmLoading = true |
| | | let httpurl = '' |
| | | let method = '' |
| | | if (!this.model.id) { |
| | | httpurl += this.url.add |
| | | method = 'post' |
| | | } else { |
| | | httpurl += this.url.edit |
| | | method = 'put' |
| | | } |
| | | let formData = Object.assign(this.model, values) |
| | | httpAction(httpurl, formData, method).then((res) => { |
| | | if (res.success) { |
| | | that.$message.success(res.message) |
| | | that.$emit('ok') |
| | | } else { |
| | | that.$message.warning(res.message) |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false |
| | | that.close() |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.close() |
| | | }, |
| | | |
| | | //éªè¯ åç§° |
| | | validateName(rule, value, callback) { |
| | | var params = { |
| | | tableName: 'base_printer_config', |
| | | fieldName: 'port_number', |
| | | fieldVal: value, |
| | | //æ°æ®åºä¸åå¨å段del_flag并使ç¨è¯¥å段ä½ä¸ºæªå é¤çç¥ï¼çå é¤ï¼false åå é¤ï¼true |
| | | delFlag: 'true' |
| | | } |
| | | duplicateCheck(params).then((res) => { |
| | | if (res.success) { |
| | | callback() |
| | | } else { |
| | | callback('æå°æºç«¯å£å·²åå¨!') |
| | | } |
| | | }) |
| | | }, |
| | | // å
³éå¼¹çªæ¶æ¸
é¤è¡¨åæ ¡éª |
| | | removeValidate() { |
| | | if (this.$refs.form) this.$refs.form.clearValidate() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .ant-btn { |
| | | padding: 0 10px; |
| | | margin-left: 3px; |
| | | } |
| | | |
| | | .ant-form-item-control { |
| | | line-height: 0px; |
| | | } |
| | | |
| | | /** 主表åè¡é´è· */ |
| | | .ant-form .ant-form-item { |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | /** Tab页é¢è¡é´è· */ |
| | | .ant-tabs-content .ant-form-item { |
| | | margin-bottom: 0px; |
| | | } |
| | | </style> |
| | |
| | | > |
| | | <j-dict-select-tag :disabled="disableSubmit" type="list" placeholder="è¯·éæ©äº§çº¿" |
| | | v-model="model.factoryId" |
| | | v-decorator="['factoryId', validatorRules.factoryId ]" |
| | | dictCode="base_factory,factory_name,id,del_flag='0' and factory_category='3'" /> |
| | | </a-form-item> |
| | | </a-col> |
| | |
| | | { min: 0, max: 64, message: 'é¿åº¦ä¸è¶
è¿ 64 个å符', trigger: 'blur' }, |
| | | { validator: this.validateName } |
| | | ] |
| | | }, |
| | | factoryId: { |
| | | rules: [ |
| | | { required: true, message: 'è¯·éæ©äº§çº¿' }, |
| | | ] |
| | | } |
| | | }, |
| | | url: { |
| | |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | <div class="table-operator"> |
| | | <a-button @click="handleAdd" type="primary" icon="plus">æ°å¢</a-button> |
| | | <a-button @click="handleAdd" type="primary" icon="plus">æ°åå
¥åº</a-button> |
| | | <a-button type="primary" icon="download" @click="handleExportXls('åå
·å
¥åºå')">导åº</a-button> |
| | | <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> |
| | | <a-button type="primary" icon="import">导å
¥</a-button> |
| | |
| | | <a-card :bordered="false"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <!-- <a-form layout="inline" @keyup.enter.native="searchQuery">--> |
| | | <!-- <a-row :gutter="24">--> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | <!-- <a-col :md="6" :sm="8">--> |
| | | <!-- <a-form-item label="åå
·ç¼ç ">--> |
| | | <!-- <a-input placeholder="请è¾å
¥åå
·ç¼ç " v-model="queryParam.cuttingId" />--> |
| | | <!-- </a-form-item>--> |
| | | <!-- </a-col>--> |
| | | <!-- <a-col :md="6" :sm="8">--> |
| | | <!-- <a-form-item label="åå
·æ¡ç ">--> |
| | | <!-- <a-input placeholder="请è¾å
¥åå
·æ¡ç " v-model="queryParam.cuttingBarcode" />--> |
| | | <!-- </a-form-item>--> |
| | | <!-- </a-col>--> |
| | | <!-- <a-col--> |
| | | <!-- :md="6"--> |
| | | <!-- :sm="8"--> |
| | | <!-- >--> |
| | | <!-- <span--> |
| | | <!-- style="float: left;overflow: hidden;"--> |
| | | <!-- class="table-page-search-submitButtons"--> |
| | | <!-- >--> |
| | | <!-- <a-button--> |
| | | <!-- type="primary"--> |
| | | <!-- @click="searchQuery"--> |
| | | <!-- icon="search"--> |
| | | <!-- >æ¥è¯¢</a-button>--> |
| | | <!-- <a-button--> |
| | | <!-- type="primary"--> |
| | | <!-- @click="searchReset"--> |
| | | <!-- icon="reload"--> |
| | | <!-- style="margin-left: 8px"--> |
| | | <!-- >éç½®</a-button>--> |
| | | <!-- </span>--> |
| | | <!-- </a-col>--> |
| | | <!-- </a-row>--> |
| | | <!-- </a-form>--> |
| | | <a-col :md="6" :sm="8"> |
| | | <a-form-item label="åå
·æ¡ç "> |
| | | <a-input placeholder="请è¾å
¥åå
·æ¡ç " v-model="queryParam.cuttingBarcode" /> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col |
| | | :md="6" |
| | | :sm="8" |
| | | > |
| | | <span |
| | | style="float: left;overflow: hidden;" |
| | | class="table-page-search-submitButtons" |
| | | > |
| | | <a-button |
| | | type="primary" |
| | | @click="searchQuery" |
| | | icon="search" |
| | | >æ¥è¯¢</a-button> |
| | | <a-button |
| | | type="primary" |
| | | @click="searchReset" |
| | | icon="reload" |
| | | style="margin-left: 8px" |
| | | >éç½®</a-button> |
| | | </span> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <!-- æ¥è¯¢åºå-END --> |
| | | |
| | |
| | | align: "center", |
| | | }, |
| | | { |
| | | title: 'æ°é', |
| | | title: 'æ»æ°', |
| | | dataIndex: 'cuttingIdNumber', |
| | | align: "center" |
| | | align: "center", |
| | | customRender: (text, record, index) => { |
| | | const obj = { |
| | | children: text, |
| | | attrs: {} |
| | | }; |
| | | // åªå¨ç¬¬ä¸è¡æ¾ç¤ºæ»æ°éï¼å
¶ä»è¡æ¾ç¤ºç©º |
| | | if (record.rowSpan !== undefined && record.rowSpan > 0) { |
| | | obj.children = text; |
| | | obj.attrs.rowSpan = record.rowSpan; |
| | | } else if (record.rowSpan === 0) { |
| | | obj.children = ''; |
| | | obj.attrs.rowSpan = 0; |
| | | } else { |
| | | obj.children = text; |
| | | obj.attrs.rowSpan = 1; |
| | | } |
| | | return obj; |
| | | } |
| | | } |
| | | ], |
| | | url: { |
| | |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | }, |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <a-row style="width: 100%"> |
| | | <a-col :span="24 / 2"> |
| | | <a-col :span="24 / 2"> |
| | | <a-form-item label="å
¥åºäºº" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <j-search-select-tag |
| | | :disabled="disableSubmit" |
| | |
| | | <a-row style="width: 100%"> |
| | | <a-col :span="24"> |
| | | <a-form-item label="å
¥åºè¯´æ" :labelCol="{span:3}" :wrapperCol="{span:21}"> |
| | | <a-textarea :disabled="disableSubmit" placeholder="请è¾å
¥å
¥åºè¯´æ" v-decorator="['receiveComment', validatorRules.receiveComment]" /> |
| | | <a-textarea :disabled="disableSubmit" placeholder="请è¾å
¥å
¥åºè¯´æ" |
| | | v-decorator="['receiveComment', validatorRules.receiveComment]" /> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row style="width: 100%"> |
| | | <a-col :span="24 / 2"> |
| | | <a-col :span="24 / 2"> |
| | | <a-form-item label="确认人" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <j-search-select-tag |
| | | :disabled="disableSubmit" |
| | |
| | | <a-row style="width: 100%"> |
| | | <a-col :span="24"> |
| | | <a-form-item label="确认æè§" :labelCol="{span:3}" :wrapperCol="{span:21}"> |
| | | <a-textarea :disabled="disableSubmit" placeholder="请è¾å
¥ç¡®è®¤æè§" v-decorator="['confirmComment', validatorRules.confirmComment]" /> |
| | | <a-textarea :disabled="disableSubmit" placeholder="请è¾å
¥ç¡®è®¤æè§" |
| | | v-decorator="['confirmComment', validatorRules.confirmComment]" /> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | |
| | | <script> |
| | | |
| | | import pick from 'lodash.pick' |
| | | import JSelectToolingModal from './JSelectToolingModal' |
| | | import moment from 'moment' |
| | | import { getAction, postAction, requestPut } from '@/api/manage' |
| | | import JDictSelectTag from '@/components/dict/JDictSelectTag' |
| | | import JSearchSelectTag from '@/components/dict/JSearchSelectTag' |
| | | import JMultiSelectTag from '@/components/dict/JMultiSelectTag' |
| | | import { filterObj } from '@/utils/util' |
| | | import store from '@/store/' |
| | | export default { |
| | | name: 'CuttingInboundModal', |
| | | components: { |
| | | import pick from 'lodash.pick' |
| | | import JSelectToolingModal from './JSelectToolingModal' |
| | | import moment from 'moment' |
| | | import { getAction, postAction, requestPut } from '@/api/manage' |
| | | import JDictSelectTag from '@/components/dict/JDictSelectTag' |
| | | import JSearchSelectTag from '@/components/dict/JSearchSelectTag' |
| | | import JMultiSelectTag from '@/components/dict/JMultiSelectTag' |
| | | import { filterObj } from '@/utils/util' |
| | | import store from '@/store/' |
| | | |
| | | export default { |
| | | name: 'CuttingInboundModal', |
| | | components: { |
| | | JSelectToolingModal, |
| | | JMultiSelectTag, |
| | | JDictSelectTag, |
| | | store, |
| | | moment, |
| | | moment |
| | | }, |
| | | data () { |
| | | return { |
| | | /* å页忰 */ |
| | | data() { |
| | | return { |
| | | /* å页忰 */ |
| | | ipagination: { |
| | | current: 1, |
| | | pageSize: 10, |
| | |
| | | }, |
| | | showQuickJumper: true, |
| | | showSizeChanger: true, |
| | | total: 0, |
| | | total: 0 |
| | | }, |
| | | title:'æ°å¢', |
| | | visible: false, |
| | | selectedRowKeys: {}, |
| | | title: 'æ°å¢', |
| | | visible: false, |
| | | selectedRowKeys: {}, |
| | | model: {}, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 6 }, |
| | | sm: { span: 6 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 18 }, |
| | | sm: { span: 18 } |
| | | }, |
| | | confirmLoading: false, |
| | | loading: false, |
| | | form: this.$form.createForm(this), |
| | | dataSource: [], |
| | | param: {}, |
| | | validatorRules: { |
| | | }, |
| | | validatorRules: {}, |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | |
| | | key: 'rowIndex', |
| | | width: 50, |
| | | align: 'center', |
| | | customRender: function (t, r, index) { |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | }, |
| | | } |
| | | }, |
| | | { |
| | | title: 'åå
·ç¼ç ', |
| | | align: 'center', |
| | | dataIndex: 'cuttingCode', |
| | | width: 150, |
| | | width: 150 |
| | | }, |
| | | { |
| | | title: 'åå
·åç§°', |
| | | align: 'center', |
| | | dataIndex: 'cuttingName', |
| | | dataIndex: 'cuttingName' |
| | | }, |
| | | { |
| | | title: 'å
¥åºæ°é', |
| | | align: 'center', |
| | | dataIndex: 'receiveNumber', |
| | | scopedSlots: { customRender: 'receiveNumber' }, |
| | | scopedSlots: { customRender: 'receiveNumber' } |
| | | }, |
| | | { |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | align: 'center', |
| | | scopedSlots: { customRender: 'action' }, |
| | | }, |
| | | scopedSlots: { customRender: 'action' } |
| | | } |
| | | ], |
| | | url: { |
| | | add: '/cms/cuttingInbound/add', |
| | | detailList: '/cms/cuttingInbound/detailList', |
| | | detailList: '/cms/cuttingInbound/detailList' |
| | | }, |
| | | orderId:'', |
| | | disableSubmit:false |
| | | } |
| | | }, |
| | | methods: { |
| | | modalFormOk(){ |
| | | orderId: '', |
| | | disableSubmit: false |
| | | } |
| | | }, |
| | | methods: { |
| | | modalFormOk() { |
| | | |
| | | }, |
| | | getQueryParams() { |
| | | }, |
| | | getQueryParams() { |
| | | this.param.pageNo = this.ipagination.current |
| | | this.param.pageSize = this.ipagination.pageSize |
| | | return filterObj(this.param) |
| | | }, |
| | | add() { |
| | | add() { |
| | | let receiver = store.getters.userInfo.id |
| | | let receiveTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss') |
| | | this.edit({ receiver: receiver, receiveTime: receiveTime }) |
| | |
| | | ) |
| | | }) |
| | | }, |
| | | handleDelete(record, index) { |
| | | handleDelete(record, index) { |
| | | this.dataSource.splice(index, 1) |
| | | }, |
| | | handleChange(value, key, column, index) { |
| | |
| | | this.dataSource = temp |
| | | } |
| | | }, |
| | | selectTooling: function () { |
| | | selectTooling: function() { |
| | | let ids = [] |
| | | for (let i = 0; i < this.dataSource.length; i++) { |
| | | ids.push(this.dataSource[i].cuttingId) |
| | |
| | | return |
| | | } |
| | | // æ ¡éªå
¥åºæ°éæ¯å¦å¡«å |
| | | for(let i=0; i<this.dataSource.length; i++) { |
| | | for (let i = 0; i < this.dataSource.length; i++) { |
| | | if (!this.dataSource[i].receiveNumber || this.dataSource[i].receiveNumber <= 0) { |
| | | this.$message.error(`å¿
须填åå
¥åºæ°é`) |
| | | return |
| | |
| | | this.dataSource = [] |
| | | this.visible = false |
| | | this.disableSubmit = false |
| | | }, |
| | | }, |
| | | mounted() { |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.$bus.$on('selectionRows', (data) => { |
| | | //getCurrSelected äºä»¶ æ¥æ¶ç»ä»¶ä¼ éçåæ° |
| | | for (let i = 0; i < data.length; i++) { |
| | |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <!-- <a-button @click="handleAdd" type="primary" icon="plus">æ°å¢ç©æä¿¡æ¯-æµè¯</a-button>--> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-spin :spinning="loading"> |
| | | <div> |
| | | <!-- 主表ååºå --> |
| | | <a-table |
| | |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio'}" |
| | | :customRow="customTableRow" |
| | | @change="handleTableChange"> |
| | | <!--ç¶ææ 个æ§å±ç¤º--> |
| | | <span |
| | |
| | | </a-table> |
| | | </div> |
| | | <!-- å表ååºå --> |
| | | <a-tabs v-model="activeKey" @change="handleChangeTabs"> |
| | | <a-tab-pane tab="åºåæç»" :key="refKeys[0]" :forceRender="true"> |
| | | <div style="display: flex; align-items: center; margin-bottom: 10px;"> |
| | | <a-tag color="green" style="font-weight: bold;"> |
| | | åºåæ»éï¼{{ totalInventoryQuantity }} |
| | | </a-tag> |
| | | </div> |
| | | <j-vxe-table |
| | | keep-source |
| | | :ref="refKeys[0]" |
| | | :loading="lswMaterialInventoryTable.loading" |
| | | :columns="lswMaterialInventoryTable.columns" |
| | | :dataSource="lswMaterialInventoryTable.dataSource" |
| | | :maxHeight="300" |
| | | :rowNumber="true" |
| | | :rowSelection="true" |
| | | :toolbar="false" |
| | | /> |
| | | <a-tabs v-model="activeKey"> |
| | | <a-tab-pane tab="åºåæç»" key="lswMaterialInventory" :forceRender="true"> |
| | | <lsw-material-inventory-list ref="lswMaterialInventory" /> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | </a-spin> |
| | |
| | | <script> |
| | | |
| | | import { getAction } from '@/api/manage' |
| | | import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' |
| | | import { JVXETypes } from '@/components/jeecg/JVxeTable' |
| | | import JFormContainer from '@/components/jeecg/JFormContainer' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import LswMaterialModal from '@views/lsw/modules/LswMaterialModal.vue' |
| | | import LswMaterialInventoryList from './LswMaterialInventoryList.vue' |
| | | |
| | | export default { |
| | | name: 'LswMaterialForm', |
| | | mixins: [JVxeTableModelMixin, JeecgListMixin], |
| | | name: 'LswMaterialView', |
| | | mixins: [JeecgListMixin], |
| | | components: { |
| | | LswMaterialModal, |
| | | JFormContainer |
| | | LswMaterialInventoryList |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | validatorRules: {}, |
| | | selectedRowKeys: [], // åå§å为空æ°ç»ï¼åéæ¶åå¨å个keyï¼ |
| | | selectedRowData: null, |
| | | refKeys: ['lswMaterialInventory'], |
| | | tableKeys: ['lswMaterialInventory'], |
| | | activeKey: 'lswMaterialInventory', |
| | | columns: [ |
| | | { |
| | |
| | | scopedSlots: { customRender: 'action' } |
| | | } |
| | | ], |
| | | // ç©æåºåä¿¡æ¯ |
| | | lswMaterialInventoryTable: { |
| | | loading: false, |
| | | dataSource: [], |
| | | columns: [ |
| | | { |
| | | title: 'æ¹æ¬¡å·', |
| | | key: 'batchNumber', |
| | | type: JVXETypes.input, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'åºåç±»å', |
| | | key: 'inventoryCategory', |
| | | type: JVXETypes.input, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'æ°é', |
| | | key: 'quantity', |
| | | type: JVXETypes.input, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'åºåå°', |
| | | key: 'warehouseName', |
| | | type: JVXETypes.input, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'åºåç¶æ', |
| | | key: 'inventoryStatus', |
| | | type: JVXETypes.input, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | } |
| | | ] |
| | | }, |
| | | url: { |
| | | //searchlikeQuery |
| | | list: '/lsw/lswMaterial/list', |
| | | edit: '/lsw/lswMaterial/edit', |
| | | active: '/lsw/lswMaterial/active', |
| | | inactive: '/lsw/lswMaterial/inactive', |
| | | queryById: '/lsw/lswMaterial/queryById', |
| | | lswMaterialInventory: { |
| | | list: '/lsw/lswMaterial/queryLswMaterialInventoryByMainId' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | |
| | | formDisabled() { |
| | | return this.disabled |
| | | }, |
| | | totalInventoryQuantity() { |
| | | if (!this.lswMaterialInventoryTable.dataSource || this.lswMaterialInventoryTable.dataSource.length === 0) { |
| | | return '0' |
| | | } |
| | | return this.lswMaterialInventoryTable.dataSource.reduce((sum, item) => { |
| | | const quantity = Number(item.quantity) || 0 |
| | | return sum + quantity |
| | | }, 0) |
| | | }, |
| | | }, |
| | | created() { |
| | | }, |
| | |
| | | return '' |
| | | }, |
| | | async onSelectChange(selectedRowKeys) { |
| | | this.lswMaterialInventoryTable.loading = true |
| | | // å鿍¡å¼ä¸ï¼selectedRowKeys æ¯æ°ç»ï¼ä½é¿åº¦æå¤ä¸º1 |
| | | console.log('ç¹å»äº---->') |
| | | this.selectedRowKeys = selectedRowKeys |
| | | this.lswMaterialInventoryTable.dataSource = [] |
| | | // è·åéä¸è¡ç宿´æ°æ® |
| | | if (selectedRowKeys.length > 0) { |
| | | const selectedId = selectedRowKeys[0] // éä¸è¡çid |
| | | const lswMaterialInventoryResult = await getAction(this.url.lswMaterialInventory.list, { 'id': selectedId }) |
| | | this.lswMaterialInventoryTable.dataSource = lswMaterialInventoryResult.result |
| | | this.lswMaterialInventoryTable.loading = false |
| | | if (selectedRowKeys.length === 1) { |
| | | //å è½½åºåä¿¡æ¯ |
| | | this.$refs.lswMaterialInventory.queryParam.materialId = this.selectedRowKeys[0] |
| | | this.$refs.lswMaterialInventory.loadData(1) |
| | | this.$refs.lswMaterialInventory.statisticsInventory(this.selectedRowKeys[0]) |
| | | }else { |
| | | //åºåä¿¡æ¯æ¸
空 |
| | | this.$refs.lswMaterialInventory.queryParam.materialId = 'null' |
| | | this.$refs.lswMaterialInventory.loadData(1) |
| | | this.$refs.lswMaterialInventory.statisticsInventory('null') |
| | | } |
| | | }, |
| | | handleActive(record) { |
| | |
| | | that.$message.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | /** |
| | | * èªå®ä¹è¡¨æ ¼è¡ |
| | | * @param record è¡¨æ ¼è¡ä¿¡æ¯ |
| | | * @returns {{style: {cursor: string}, on: {click: *}}} æ ·å¼å¯¹è±¡ä¸äºä»¶æ¹æ³ |
| | | */ |
| | | customTableRow(record) { |
| | | return { |
| | | style: { |
| | | cursor: 'pointer' |
| | | }, |
| | | on: { |
| | | click: () => { |
| | | this.onSelectChange([record.id]) |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery" > |
| | | <a-row :gutter="24"> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="线边åº"> |
| | | <j-dict-select-tag placeholder="è¯·éæ©çº¿è¾¹åº" v-model="queryParam.warehouseId" |
| | | dictCode="base_line_side_warehouse,warehouse_name,id,del_flag=0 and warehouse_status='1'"></j-dict-select-tag> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="å
¥åºç±»å"> |
| | | <j-dict-select-tag placeholder="è¯·éæ©å
¥åºç±»å" v-model="queryParam.inboundCategory" dictCode="material_inbound_category"></j-dict-select-tag> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="ç©æç¼ç "> |
| | | <j-input placeholder="请è¾å
¥ç©æç¼ç " v-model="queryParam.materialNumber"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="ç©æåç§°"> |
| | | <j-input placeholder="请è¾å
¥ç©æåç§°" v-model="queryParam.materialName"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="æ¹æ¬¡å·"> |
| | | <j-input placeholder="请è¾å
¥æ¹æ¬¡å·" v-model="queryParam.batchNumber"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <template v-if="toggleSearchStatus"> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="ç©æåç§°"> |
| | | <j-input placeholder="请è¾å
¥ç©æåç§°" v-model="queryParam.materialName"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="æ¹æ¬¡å·"> |
| | | <j-input placeholder="请è¾å
¥æ¹æ¬¡å·" v-model="queryParam.batchNumber"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | </template> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">éç½®</a-button> |
| | | <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">éç½®</a-button> |
| | | <a @click="handleToggleSearch" style="margin-left: 8px"> |
| | | {{ toggleSearchStatus ? 'æ¶èµ·' : 'å±å¼' }} |
| | | <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> |
| | | </a> |
| | | </span> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | <div class="table-operator"> |
| | | <a-button @click="handleAdd" type="primary" icon="plus">æ°å¢</a-button> |
| | | <a-dropdown v-if="selectedRowKeys.length > 0"> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>å é¤</a-menu-item> |
| | | </a-menu> |
| | | <a-button style="margin-left: 8px"> æ¹éæä½ <a-icon type="down" /></a-button> |
| | | </a-dropdown> |
| | | <a-button @click="handleAdd('HEAT_TREATMENT_INBOUND')" type="primary" icon="plus">çå¤çå¤åå
¥åº</a-button> |
| | | <a-button @click="handleAdd('SMALL_INNER_RING')" type="primary" icon="plus">å°å
åå¤åå
¥åº</a-button> |
| | | <a-button @click="handleAdd('MATERIAL_INNER_TRANSFER')" type="primary" icon="plus">å
é¨è°æ¨</a-button> |
| | | </div> |
| | | |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <a style="margin-left: 24px" @click="onClearSelected">æ¸
空</a> |
| | | </div> |
| | | |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | |
| | | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
| | | class="j-table-force-nowrap" |
| | | @change="handleTableChange"> |
| | | |
| | | <template slot="htmlSlot" slot-scope="text"> |
| | | <div v-html="text"></div> |
| | | </template> |
| | | <template slot="imgSlot" slot-scope="text,record"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ å¾ç</span> |
| | | <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> |
| | | </template> |
| | | <template slot="fileSlot" slot-scope="text"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ æä»¶</span> |
| | | <a-button |
| | | v-else |
| | | :ghost="true" |
| | | type="primary" |
| | | icon="download" |
| | | size="small" |
| | | @click="downloadFile(text)"> |
| | | ä¸è½½ |
| | | </a-button> |
| | | </template> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handleEdit(record)">ç¼è¾</a> |
| | | |
| | | <a-divider type="vertical" /> |
| | | <a-dropdown> |
| | | <a class="ant-dropdown-link">æ´å¤ <a-icon type="down" /></a> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item> |
| | | <a @click="handleDetail(record)">详æ
</a> |
| | | </a-menu-item> |
| | | <a-menu-item> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </a-menu-item> |
| | | </a-menu> |
| | | </a-dropdown> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | |
| | |
| | | } |
| | | }, |
| | | { |
| | | title:'产线', |
| | | title:'æ¥æºç¼ç ', |
| | | align:"center", |
| | | dataIndex: 'factoryId_dictText' |
| | | dataIndex: 'originalCode' |
| | | }, |
| | | { |
| | | title:'åºåå°', |
| | | title:'æ¥æºåç§°', |
| | | align:"center", |
| | | dataIndex: 'originalName' |
| | | }, |
| | | { |
| | | title:'线边åº', |
| | | align:"center", |
| | | dataIndex: 'warehouseId_dictText' |
| | | }, |
| | |
| | | dataIndex: 'quantity' |
| | | }, |
| | | { |
| | | title:'æ¥æ¶äºº', |
| | | title:'å
¥åºç±»å', |
| | | align:"center", |
| | | dataIndex: 'receiver' |
| | | dataIndex: 'inboundCategory_dictText' |
| | | }, |
| | | { |
| | | title:'æ¥æ¶æ¶é´', |
| | | title:'å
¥åºäºº', |
| | | align:"center", |
| | | dataIndex: 'receiver_dictText' |
| | | }, |
| | | { |
| | | title:'å
¥åºæ¶é´', |
| | | align:"center", |
| | | dataIndex: 'receiveTime' |
| | | }, |
| | | // { |
| | | // title: 'æä½', |
| | | // dataIndex: 'action', |
| | | // align:"center", |
| | | // fixed:"right", |
| | | // width:147, |
| | | // scopedSlots: { customRender: 'action' } |
| | | // } |
| | | ], |
| | | url: { |
| | | list: "/lswmaterialinbound/lswMaterialInbound/list", |
| | | delete: "/lswmaterialinbound/lswMaterialInbound/delete", |
| | | deleteBatch: "/lswmaterialinbound/lswMaterialInbound/deleteBatch", |
| | | exportXlsUrl: "/lswmaterialinbound/lswMaterialInbound/exportXls", |
| | | importExcelUrl: "lswmaterialinbound/lswMaterialInbound/importExcel", |
| | | list: "/lsw/materialInbound/list", |
| | | }, |
| | | dictOptions:{}, |
| | | superFieldList:[], |
| | | } |
| | | }, |
| | | created() { |
| | | this.getSuperFieldList(); |
| | | }, |
| | | computed: { |
| | | importExcelUrl: function(){ |
| | | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
| | | }, |
| | | }, |
| | | methods: { |
| | | initDictConfig(){ |
| | | |
| | | handleAdd(inboundCategory) { |
| | | this.$refs.modalForm.add(inboundCategory); |
| | | this.$refs.modalForm.title = "æ°å¢"; |
| | | this.$refs.modalForm.disableSubmit = false; |
| | | }, |
| | | getSuperFieldList(){ |
| | | let fieldList=[]; |
| | | fieldList.push({type:'int',value:'delFlag',text:'å 餿 è®°',dictCode:''}) |
| | | fieldList.push({type:'string',value:'factoryId',text:'产线ID',dictCode:''}) |
| | | fieldList.push({type:'string',value:'warehouseId',text:'åºåå°ID',dictCode:''}) |
| | | fieldList.push({type:'string',value:'materialNumber',text:'ç©æç¼ç ',dictCode:''}) |
| | | fieldList.push({type:'string',value:'materialName',text:'ç©æåç§°',dictCode:''}) |
| | | fieldList.push({type:'string',value:'batchNumber',text:'æ¹æ¬¡å·',dictCode:''}) |
| | | fieldList.push({type:'int',value:'quantity',text:'å
¥åºæ°é',dictCode:''}) |
| | | fieldList.push({type:'string',value:'receiver',text:'æ¥æ¶äºº',dictCode:''}) |
| | | fieldList.push({type:'datetime',value:'receiveTime',text:'æ¥æ¶æ¶é´'}) |
| | | this.superFieldList = fieldList |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <a-card :bordered="false"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | </a-row> |
| | | </a-form> |
| | | <div style="display: flex; align-items: center; margin-bottom: 10px;"> |
| | | <a-tag color="blue" style="font-weight: bold; font-size: large;"> |
| | | åºåç»è®¡ï¼{{ inventoryStatisticsInfo}} |
| | | </a-tag> |
| | | </div> |
| | | <!-- æ¥è¯¢åºå-END --> |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | <div class="table-operator"> |
| | | <a-button @click="handleAdd" type="primary" icon="plus">æ°å¢</a-button> |
| | | <a-button type="primary" icon="download" @click="handleExportXls('ç©æåºåä¿¡æ¯')">导åº</a-button> |
| | | <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> |
| | | <a-button type="primary" icon="import">导å
¥</a-button> |
| | | </a-upload> |
| | | <!-- é«çº§æ¥è¯¢åºå --> |
| | | <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> |
| | | <a-dropdown v-if="selectedRowKeys.length > 0"> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>å é¤</a-menu-item> |
| | | </a-menu> |
| | | <a-button style="margin-left: 8px"> æ¹éæä½ <a-icon type="down" /></a-button> |
| | | </a-dropdown> |
| | | </div> |
| | | |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <a style="margin-left: 24px" @click="onClearSelected">æ¸
空</a> |
| | | </div> |
| | | |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | :scroll="{x:true}" |
| | | bordered |
| | | rowKey="id" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
| | | class="j-table-force-nowrap" |
| | | @change="handleTableChange"> |
| | | |
| | | <template slot="htmlSlot" slot-scope="text"> |
| | | <div v-html="text"></div> |
| | | </template> |
| | | <template slot="imgSlot" slot-scope="text,record"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ å¾ç</span> |
| | | <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> |
| | | </template> |
| | | <template slot="fileSlot" slot-scope="text"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ æä»¶</span> |
| | | <a-button |
| | | v-else |
| | | :ghost="true" |
| | | type="primary" |
| | | icon="download" |
| | | size="small" |
| | | @click="downloadFile(text)"> |
| | | ä¸è½½ |
| | | </a-button> |
| | | </template> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handleEdit(record)">ç¼è¾</a> |
| | | |
| | | <a-divider type="vertical" /> |
| | | <a-dropdown> |
| | | <a class="ant-dropdown-link">æ´å¤ <a-icon type="down" /></a> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item> |
| | | <a @click="handleDetail(record)">详æ
</a> |
| | | </a-menu-item> |
| | | <a-menu-item> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </a-menu-item> |
| | | </a-menu> |
| | | </a-dropdown> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | |
| | | <lsw-material-inventory-modal ref="modalForm" @ok="modalFormOk"></lsw-material-inventory-modal> |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | :scroll="{x:true}" |
| | | bordered |
| | | rowKey="id" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
| | | class="j-table-force-nowrap" |
| | | @change="handleTableChange"> |
| | | </a-table> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import '@/assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import LswMaterialInventoryModal from './modules/LswMaterialInventoryModal' |
| | | import '@/assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import LswMaterialInventoryModal from './modules/LswMaterialInventoryModal' |
| | | import { getAction } from '@api/manage' |
| | | |
| | | export default { |
| | | name: 'LswMaterialInventoryList', |
| | | mixins:[JeecgListMixin, mixinDevice], |
| | | components: { |
| | | LswMaterialInventoryModal |
| | | }, |
| | | data () { |
| | | return { |
| | | description: 'ç©æåºåä¿¡æ¯ç®¡ç页é¢', |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key:'rowIndex', |
| | | width:60, |
| | | align:"center", |
| | | customRender:function (t,r,index) { |
| | | return parseInt(index)+1; |
| | | } |
| | | }, |
| | | { |
| | | title:'ç©æID', |
| | | align:"center", |
| | | dataIndex: 'materialId' |
| | | }, |
| | | { |
| | | title:'æ¹æ¬¡å·', |
| | | align:"center", |
| | | dataIndex: 'batchNumber' |
| | | }, |
| | | { |
| | | title:'åºåç±»å', |
| | | align:"center", |
| | | dataIndex: 'inventoryCategory' |
| | | }, |
| | | { |
| | | title:'æ°é', |
| | | align:"center", |
| | | dataIndex: 'quantity' |
| | | }, |
| | | { |
| | | title:'åºåå°ID', |
| | | align:"center", |
| | | dataIndex: 'warehouseId' |
| | | }, |
| | | { |
| | | title:'åºåç¶æ', |
| | | align:"center", |
| | | dataIndex: 'inventoryStatus' |
| | | }, |
| | | { |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | align:"center", |
| | | fixed:"right", |
| | | width:147, |
| | | scopedSlots: { customRender: 'action' } |
| | | export default { |
| | | name: 'LswMaterialInventoryList', |
| | | mixins: [JeecgListMixin, mixinDevice], |
| | | components: { |
| | | LswMaterialInventoryModal |
| | | }, |
| | | data() { |
| | | return { |
| | | description: 'ç©æåºåä¿¡æ¯ç®¡ç页é¢', |
| | | inventoryStatisticsInfo: "0", |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: 'center', |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | } |
| | | ], |
| | | url: { |
| | | list: "/lswmaterialinventory/lswMaterialInventory/list", |
| | | delete: "/lswmaterialinventory/lswMaterialInventory/delete", |
| | | deleteBatch: "/lswmaterialinventory/lswMaterialInventory/deleteBatch", |
| | | exportXlsUrl: "/lswmaterialinventory/lswMaterialInventory/exportXls", |
| | | importExcelUrl: "lswmaterialinventory/lswMaterialInventory/importExcel", |
| | | |
| | | }, |
| | | dictOptions:{}, |
| | | superFieldList:[], |
| | | } |
| | | }, |
| | | created() { |
| | | this.getSuperFieldList(); |
| | | }, |
| | | computed: { |
| | | importExcelUrl: function(){ |
| | | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
| | | { |
| | | title: 'æ¹æ¬¡å·', |
| | | align: 'center', |
| | | dataIndex: 'batchNumber' |
| | | }, |
| | | { |
| | | title: 'åºåç±»å', |
| | | align: 'center', |
| | | dataIndex: 'inventoryCategory_dictText' |
| | | }, |
| | | { |
| | | title: 'æ°é', |
| | | align: 'center', |
| | | dataIndex: 'quantity' |
| | | }, |
| | | { |
| | | title: 'åºåå°', |
| | | align: 'center', |
| | | dataIndex: 'warehouseId_dictText' |
| | | }, |
| | | { |
| | | title: 'åºåç¶æ', |
| | | align: 'center', |
| | | dataIndex: 'inventoryStatus_dictText' |
| | | }, |
| | | { |
| | | title: 'çå¤çæ è®°', |
| | | align: 'center', |
| | | dataIndex: 'warehouseId_dictText' |
| | | }, |
| | | ], |
| | | url: { |
| | | list: '/lsw/materialInventory/list', |
| | | statistics: '/lsw/materialInventory/statisticsInventory', |
| | | }, |
| | | }, |
| | | methods: { |
| | | initDictConfig(){ |
| | | }, |
| | | getSuperFieldList(){ |
| | | let fieldList=[]; |
| | | fieldList.push({type:'string',value:'materialId',text:'ç©æID',dictCode:''}) |
| | | fieldList.push({type:'string',value:'batchNumber',text:'æ¹æ¬¡å·',dictCode:''}) |
| | | fieldList.push({type:'string',value:'inventoryCategory',text:'åºåç±»å',dictCode:''}) |
| | | fieldList.push({type:'string',value:'quantity',text:'æ°é',dictCode:''}) |
| | | fieldList.push({type:'string',value:'warehouseId',text:'åºåå°ID',dictCode:''}) |
| | | fieldList.push({type:'string',value:'inventoryStatus',text:'åºåç¶æ',dictCode:''}) |
| | | this.superFieldList = fieldList |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | }, |
| | | methods: { |
| | | statisticsInventory(materialId) { |
| | | getAction(this.url.statistics, {materialId : materialId}).then(res => { |
| | | if(res.success) { |
| | | this.inventoryStatisticsInfo = res.result; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less'; |
| | | @import '~@assets/less/common.less'; |
| | | </style> |
| | |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="线边åº"> |
| | | <j-dict-select-tag placeholder="è¯·éæ©çº¿è¾¹åº" v-model="queryParam.warehouseId" |
| | | dictCode="base_line_side_warehouse,warehouse_name,id,del_flag=0 and warehouse_status='1'"></j-dict-select-tag> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="åºåºç±»å"> |
| | | <j-dict-select-tag placeholder="è¯·éæ©åºåºç±»å" v-model="queryParam.outboundCategory" |
| | | dictCode="material_outbound_category"></j-dict-select-tag> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="ç©æç¼ç "> |
| | | <j-input placeholder="请è¾å
¥ç©æç¼ç " v-model="queryParam.materialNumber"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="ç©æåç§°"> |
| | | <j-input placeholder="请è¾å
¥ç©æåç§°" v-model="queryParam.materialName"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="æ¹æ¬¡å·"> |
| | | <j-input placeholder="请è¾å
¥æ¹æ¬¡å·" v-model="queryParam.batchNumber"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <template v-if="toggleSearchStatus"> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="ç©æåç§°"> |
| | | <j-input placeholder="请è¾å
¥ç©æåç§°" v-model="queryParam.materialName"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <a-form-item label="æ¹æ¬¡å·"> |
| | | <j-input placeholder="请è¾å
¥æ¹æ¬¡å·" v-model="queryParam.batchNumber"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | </template> |
| | | <a-col :xl="6" :lg="7" :md="8" :sm="24"> |
| | | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">éç½®</a-button> |
| | | <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">éç½®</a-button> |
| | | <a @click="handleToggleSearch" style="margin-left: 8px"> |
| | | {{ toggleSearchStatus ? 'æ¶èµ·' : 'å±å¼' }} |
| | | <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> |
| | | </a> |
| | | </span> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | </div> |
| | | <!-- æ¥è¯¢åºå-END --> |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | <div class="table-operator"> |
| | | <a-button @click="handleAdd" type="primary" icon="plus">æ°å¢</a-button> |
| | | <a-dropdown v-if="selectedRowKeys.length > 0"> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>å é¤</a-menu-item> |
| | | </a-menu> |
| | | <a-button style="margin-left: 8px"> æ¹éæä½ <a-icon type="down" /></a-button> |
| | | </a-dropdown> |
| | | </div> |
| | | |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 <a |
| | | style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <a style="margin-left: 24px" @click="onClearSelected">æ¸
空</a> |
| | | </div> |
| | | |
| | |
| | | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
| | | class="j-table-force-nowrap" |
| | | @change="handleTableChange"> |
| | | |
| | | <template slot="htmlSlot" slot-scope="text"> |
| | | <div v-html="text"></div> |
| | | </template> |
| | | <template slot="imgSlot" slot-scope="text,record"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ å¾ç</span> |
| | | <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> |
| | | </template> |
| | | <template slot="fileSlot" slot-scope="text"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ æä»¶</span> |
| | | <a-button |
| | | v-else |
| | | :ghost="true" |
| | | type="primary" |
| | | icon="download" |
| | | size="small" |
| | | @click="downloadFile(text)"> |
| | | ä¸è½½ |
| | | </a-button> |
| | | </template> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handleEdit(record)">ç¼è¾</a> |
| | | |
| | | <a-divider type="vertical" /> |
| | | <a-dropdown> |
| | | <a class="ant-dropdown-link">æ´å¤ <a-icon type="down" /></a> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item> |
| | | <a @click="handleDetail(record)">详æ
</a> |
| | | </a-menu-item> |
| | | <a-menu-item> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </a-menu-item> |
| | | </a-menu> |
| | | </a-dropdown> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | |
| | | <lsw-material-outbound-modal ref="modalForm" @ok="modalFormOk"></lsw-material-outbound-modal> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import '@/assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import LswMaterialOutboundModal from './modules/LswMaterialOutboundModal' |
| | | import '@/assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | |
| | | export default { |
| | | name: 'LswMaterialOutboundList', |
| | | mixins:[JeecgListMixin, mixinDevice], |
| | | components: { |
| | | LswMaterialOutboundModal |
| | | }, |
| | | data () { |
| | | return { |
| | | description: 'ç©æåºåºå管ç页é¢', |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key:'rowIndex', |
| | | width:60, |
| | | align:"center", |
| | | customRender:function (t,r,index) { |
| | | return parseInt(index)+1; |
| | | } |
| | | }, |
| | | { |
| | | title:'ç©æç¼ç ', |
| | | align:"center", |
| | | dataIndex: 'materialNumber' |
| | | }, |
| | | { |
| | | title:'ç©æåç§°', |
| | | align:"center", |
| | | dataIndex: 'materialName' |
| | | }, |
| | | { |
| | | title:'产线', |
| | | align:"center", |
| | | dataIndex: 'factoryId_dictText' |
| | | }, |
| | | { |
| | | title:'æ¹æ¬¡å·', |
| | | align:"center", |
| | | dataIndex: 'batchNumber' |
| | | }, |
| | | { |
| | | title:'åºåºäºº', |
| | | align:"center", |
| | | dataIndex: 'outboundStaff' |
| | | }, |
| | | { |
| | | title:'åºåºæ¶é´', |
| | | align:"center", |
| | | dataIndex: 'outboundTime' |
| | | }, |
| | | { |
| | | title:'åºåºæ°é', |
| | | align:"center", |
| | | dataIndex: 'quantity' |
| | | }, |
| | | { |
| | | title:'å·¥å', |
| | | align:"center", |
| | | dataIndex: 'workOrderId' |
| | | }, |
| | | { |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | align:"center", |
| | | fixed:"right", |
| | | width:147, |
| | | scopedSlots: { customRender: 'action' } |
| | | export default { |
| | | name: 'LswMaterialOutboundList', |
| | | mixins: [JeecgListMixin, mixinDevice], |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | description: 'ç©æåºåºå管ç页é¢', |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: 'center', |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | } |
| | | ], |
| | | url: { |
| | | list: "/lswmaterialoutbound/lswMaterialOutbound/list", |
| | | delete: "/lswmaterialoutbound/lswMaterialOutbound/delete", |
| | | deleteBatch: "/lswmaterialoutbound/lswMaterialOutbound/deleteBatch", |
| | | exportXlsUrl: "/lswmaterialoutbound/lswMaterialOutbound/exportXls", |
| | | importExcelUrl: "lswmaterialoutbound/lswMaterialOutbound/importExcel", |
| | | |
| | | }, |
| | | dictOptions:{}, |
| | | superFieldList:[], |
| | | } |
| | | }, |
| | | created() { |
| | | this.getSuperFieldList(); |
| | | }, |
| | | computed: { |
| | | importExcelUrl: function(){ |
| | | return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; |
| | | }, |
| | | }, |
| | | methods: { |
| | | initDictConfig(){ |
| | | }, |
| | | getSuperFieldList(){ |
| | | let fieldList=[]; |
| | | fieldList.push({type:'int',value:'delFlag',text:'å 餿 è®°',dictCode:''}) |
| | | fieldList.push({type:'string',value:'materialNumber',text:'ç©æç¼ç ',dictCode:''}) |
| | | fieldList.push({type:'string',value:'materialName',text:'ç©æåç§°',dictCode:''}) |
| | | fieldList.push({type:'string',value:'factoryId',text:'产线ID',dictCode:''}) |
| | | fieldList.push({type:'string',value:'batchNumber',text:'æ¹æ¬¡å·',dictCode:''}) |
| | | fieldList.push({type:'string',value:'outboundStaff',text:'åºåºäºº',dictCode:''}) |
| | | fieldList.push({type:'datetime',value:'outboundTime',text:'åºåºæ¶é´'}) |
| | | fieldList.push({type:'string',value:'quantity',text:'åºåºæ°é',dictCode:''}) |
| | | fieldList.push({type:'string',value:'workOrderId',text:'å·¥åID',dictCode:''}) |
| | | this.superFieldList = fieldList |
| | | { |
| | | title: '线边åº', |
| | | align: 'center', |
| | | dataIndex: 'warehouseId_dictText' |
| | | }, |
| | | { |
| | | title: 'ç©æç¼ç ', |
| | | align: 'center', |
| | | dataIndex: 'materialNumber' |
| | | }, |
| | | { |
| | | title: 'ç©æåç§°', |
| | | align: 'center', |
| | | dataIndex: 'materialName' |
| | | }, |
| | | { |
| | | title: 'æ¹æ¬¡å·', |
| | | align: 'center', |
| | | dataIndex: 'batchNumber' |
| | | }, |
| | | { |
| | | title: 'åºåºç±»å', |
| | | align: 'center', |
| | | dataIndex: 'outboundCategory_dictText' |
| | | }, |
| | | { |
| | | title: 'åºåºäºº', |
| | | align: 'center', |
| | | dataIndex: 'outboundStaff_dictText' |
| | | }, |
| | | { |
| | | title: 'åºåºæ¶é´', |
| | | align: 'center', |
| | | dataIndex: 'outboundTime' |
| | | }, |
| | | { |
| | | title: 'åºåºæ°é', |
| | | align: 'center', |
| | | dataIndex: 'quantity' |
| | | } |
| | | ], |
| | | url: { |
| | | list: '/lsw/materialOutbound/list' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: {}, |
| | | methods: {} |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less'; |
| | | @import '~@assets/less/common.less'; |
| | | </style> |
| | |
| | | <j-form-container :disabled="formDisabled"> |
| | | <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> |
| | | <a-row> |
| | | <a-form-model-item label="产线" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryId"> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | <a-form-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | label="" |
| | | > |
| | | <j-select-factory |
| | | :disabled="disabled" |
| | | v-model="model.factoryId" |
| | | :multi="true" |
| | | @back="backFactoryInfo" |
| | | :backProduction="true" |
| | | :treeProductOpera="true" |
| | | ></j-select-factory> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form-model-item> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="åºåå°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseId"> |
| | | <j-search-select-tag v-model="model.warehouseId" placeholder="è¯·éæ©åºåå°" |
| | | dict="base_line_side_warehouse,warehouse_name,id"></j-search-select-tag> |
| | | <a-form-model-item label="æ¥æºç¼ç " :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalCode" |
| | | v-if="model.inboundCategory !== 'MATERIAL_INNER_TRANSFER'"> |
| | | <a-input v-model="model.originalCode" placeholder="请è¾å
¥æ¥æºç¼ç "></a-input> |
| | | </a-form-model-item> |
| | | <a-form-model-item label="æ¥æºçº¿è¾¹åº" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalCode" |
| | | v-else> |
| | | <j-search-select-tag v-model="model.originalCode" placeholder="è¯·éæ©çº¿è¾¹åº" |
| | | :dict-options="originalCodeDictOptions" |
| | | @change="originalCodeSelectChange"></j-search-select-tag> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="æ¥æºåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalName"> |
| | | <a-input v-model="model.originalName" placeholder="请è¾å
¥æ¥æºåç§°"></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="线边åº" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseId"> |
| | | <j-search-select-tag v-model="model.warehouseId" placeholder="è¯·éæ©çº¿è¾¹åº" |
| | | :dict-options="warehouseDictOptions" |
| | | @change="warehouseSelectChange"></j-search-select-tag> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="ç©æç¼ç " :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> |
| | | <a-input v-model="model.materialNumber" placeholder="请è¾å
¥ç©æç¼ç "></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="ç©æåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> |
| | | <a-input v-model="model.materialName" placeholder="请è¾å
¥ç©æåç§°"></a-input> |
| | | <j-search-select-tag :dict-options="materialDictOptions" v-model="model.materialNumber" |
| | | placeholder="è¯·éæ©ç©æç¼ç " @change="materialSelectChange"></j-search-select-tag> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | |
| | | <a-input-number v-model="model.quantity" placeholder="请è¾å
¥å
¥åºæ°é" style="width: 100%" /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form-model> |
| | | </j-form-container> |
| | | <j-form-container disabled> |
| | | <a-form-model ref="form1" :model="model" slot="detail"> |
| | | <a-row> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="æ¥æ¶äºº" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiver"> |
| | | <j-select-user-by-dep v-model="model.receiver" placeholder="请è¾å
¥æ¥æ¶äºº"></j-select-user-by-dep> |
| | | <a-form-model-item label="ç©æåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> |
| | | <a-input v-model="model.materialName"></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="æ¥æ¶æ¶é´" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveTime"> |
| | | <j-date placeholder="è¯·éæ©æ¥æ¶æ¶é´" v-model="model.receiveTime" :show-time="true" |
| | | date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" /> |
| | | <a-form-model-item label="å
¥åºç±»å" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inboundCategory"> |
| | | <j-search-select-tag v-model="model.inboundCategory" |
| | | dict="material_inbound_category"></j-search-select-tag> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | |
| | | <script> |
| | | |
| | | import { httpAction, getAction } from '@/api/manage' |
| | | import { validateDuplicateValue } from '@/utils/util' |
| | | import JDate from '@/components/jeecg/JDate' |
| | | import pick from 'lodash.pick' |
| | | import moment from 'moment' |
| | | import { duplicateCheck } from '@/api/api'//é夿 ¡éª |
| | | import JTreeDict from '@/components/jeecg/JTreeDict'//åç±»åå
¸æ 形䏿ç»ä»¶ |
| | | import JSelectFactory from '../../../../src/components/jeecgbiz/JSelectFactory.vue' |
| | | import { getAction, httpAction } from '@/api/manage' |
| | | |
| | | export default { |
| | | name: 'LswMaterialInboundForm', |
| | | components: { |
| | | JDate, |
| | | JTreeDict, |
| | | JSelectFactory |
| | | }, |
| | | components: {}, |
| | | props: { |
| | | //表åç¦ç¨ |
| | | disabled: { |
| | |
| | | sm: { span: 16 } |
| | | }, |
| | | confirmLoading: false, |
| | | warehouseDictOptions: [], |
| | | materialDictOptions: [], |
| | | validatorRules: { |
| | | factoryId: [ |
| | | { required: true, message: '产线æ¯å¿
é项', trigger: 'change' } |
| | | originalCode: [ |
| | | { required: true, message: 'æ¥æºç¼ç æ¯å¿
é项', trigger: 'change' } |
| | | ], |
| | | originalName: [ |
| | | { required: true, message: 'æ¥æºåç§°æ¯å¿
é项', trigger: 'change' } |
| | | ], |
| | | warehouseId: [ |
| | | { required: true, message: 'åºåå°æ¯å¿
é项', trigger: 'change' } |
| | | { required: true, message: 'çº¿è¾¹åºæ¯å¿
é项', trigger: 'change' } |
| | | ], |
| | | materialNumber: [ |
| | | { required: true, message: 'ç©æç¼ç æ¯å¿
é项', trigger: 'change' } |
| | |
| | | ], |
| | | quantity: [ |
| | | { required: true, message: 'å
¥åºæ°éæ¯å¿
é项', trigger: 'change' } |
| | | ], |
| | | receiver: [ |
| | | { required: true, message: 'æ¥æ¶äººæ¯å¿
é项', trigger: 'change' } |
| | | ], |
| | | receiveTime: [ |
| | | { required: true, message: 'æ¥æ¶æ¶é´æ¯å¿
é项', trigger: 'change' } |
| | | ] |
| | | }, |
| | | url: { |
| | | add: '/lswmaterialinbound/lswMaterialInbound/add', |
| | | edit: '/lswmaterialinbound/lswMaterialInbound/edit', |
| | | queryById: '/lswmaterialinbound/lswMaterialInbound/queryById' |
| | | add: '/lsw/materialInbound/add', |
| | | edit: '/lsw/materialInbound/edit', |
| | | queryById: '/lsw/materialInbound/queryById', |
| | | queryByProductionType: '/base/lineSideWarehouse/queryByProductionType', |
| | | queryByMaterialCategory: '/lsw/lswMaterial/queryByMaterialCategory' |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | formDisabled() { |
| | | return this.disabled |
| | | }, |
| | | originalCodeDictOptions() { |
| | | return this.warehouseDictOptions.map(warehouse => ({ |
| | | ...warehouse, |
| | | value: warehouse.warehouseCode, |
| | | text: warehouse.warehouseName + '(' + warehouse.warehouseCode + ')' |
| | | })) |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.modelDefault = JSON.parse(JSON.stringify(this.model)) |
| | | }, |
| | | methods: { |
| | | backFactoryInfo(info) { |
| | | this.model.factoryIds = this.model.factoryId |
| | | this.nextFactoryOptions = info.map((item, index, arr) => { |
| | | let c = { label: item.text, value: item.value + '' } |
| | | return c |
| | | }) |
| | | }, |
| | | add() { |
| | | add(inboundCategory) { |
| | | this.warehouseDictOptions = [] |
| | | this.materialDictOptions = [] |
| | | if (inboundCategory === 'HEAT_TREATMENT_INBOUND') { |
| | | this.loadWarehouseDictOptions('OUTERFLANGE,INNERFLANGE') |
| | | this.loadMaterialDictOptions('BLANK') |
| | | } else if (inboundCategory === 'SMALL_INNER_RING') { |
| | | this.loadWarehouseDictOptions('ASSEMBLE') |
| | | this.loadMaterialDictOptions('SMALL_INNER_RING') |
| | | } else if (inboundCategory === 'MATERIAL_INNER_TRANSFER') { |
| | | this.loadWarehouseDictOptions('ASSEMBLE,OUTERFLANGE,INNERFLANG,HEATTREATMENT') |
| | | this.loadMaterialDictOptions('OUTER_FLANGE,INNER_FLANGE,STEEL_BALL,BLANK,COMPONENTS') |
| | | } |
| | | this.modelDefault.inboundCategory = inboundCategory |
| | | this.edit(this.modelDefault) |
| | | }, |
| | | edit(record) { |
| | |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | loadWarehouseDictOptions(productionType) { |
| | | let params = { productionType: productionType } |
| | | getAction(this.url.queryByProductionType, params).then(res => { |
| | | if (res.success) { |
| | | this.warehouseDictOptions = res.result.map(warehouse => ({ |
| | | ...warehouse, |
| | | value: warehouse.id, |
| | | text: warehouse.warehouseName + '(' + warehouse.warehouseCode + ')' |
| | | })) |
| | | } |
| | | }) |
| | | }, |
| | | loadMaterialDictOptions(materialCategory) { |
| | | let params = { materialCategory: materialCategory } |
| | | getAction(this.url.queryByMaterialCategory, params).then(res => { |
| | | if (res.success) { |
| | | this.materialDictOptions = res.result.map(material => ({ |
| | | ...material, |
| | | value: material.materialNumber, |
| | | text: material.materialNumber + '(' + material.materialName + ')' |
| | | })) |
| | | } |
| | | }) |
| | | }, |
| | | warehouseSelectChange(value) { |
| | | let warehouse = this.warehouseDictOptions.find(option => option.value === value) |
| | | if (warehouse) { |
| | | this.model.factoryId = warehouse.factoryId |
| | | } else { |
| | | this.model.factoryId = undefined |
| | | } |
| | | }, |
| | | materialSelectChange(value) { |
| | | let material = this.materialDictOptions.find(option => option.value === value) |
| | | if (material) { |
| | | this.model.materialName = material.materialName |
| | | } else { |
| | | this.model.materialName = undefined |
| | | } |
| | | }, |
| | | originalCodeSelectChange(value) { |
| | | let warehouse = this.originalCodeDictOptions.find(option => option.value === value) |
| | | if (warehouse) { |
| | | this.model.originalName = warehouse.warehouseName |
| | | } else { |
| | | this.model.originalName = undefined |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | add () { |
| | | add (inboundCategory) { |
| | | this.visible=true |
| | | this.$nextTick(()=>{ |
| | | this.$refs.realForm.add(); |
| | | this.$refs.realForm.add(inboundCategory); |
| | | }) |
| | | }, |
| | | edit (record) { |
| | |
| | | <div class="header"> |
| | | <a href="/"> |
| | | <img src="~@/assets/lxzn.png" class="logo" alt="logo"> |
| | | <span class="title">MDCæºæ
§è½¦é´</span> |
| | | <span class="title">åæè½´æ¿æºæ
§è½¦é´</span> |
| | | </a> |
| | | </div> |
| | | </div> |
| | |
| | | >ç¡®å® |
| | | </a-button> |
| | | </a-form-item> |
| | | |
| | | <a-form-model-item style="color: red;font-size: 0.8vw"> |
| | | å¯çº§ï¼å
é¨ è¦åï¼æ¬ç³»ç»ç¦æ¢åå¨ãå¤çãä¼ è¾æ¶å¯ä¿¡æ¯ |
| | | </a-form-model-item> |
| | | |
| | | </a-form-model> |
| | | </div> |