Commit aae5f85dcca90cd4b12c68bc5c29edd6ccf83d10

Authored by 陈翱
2 parents f9f4b95b eab3f589

Merge remote-tracking branch 'origin/develop' into develop

src/views/makeInventory/MakeInventoryList.vue 0 → 100644
  1 +<template>
  2 + <a-card :bordered="false">
  3 + <!-- 查询区域 -->
  4 + <div class="table-page-search-wrapper">
  5 + <a-form layout="inline" @keyup.enter.native="searchQuery">
  6 + <a-row :gutter="24">
  7 + </a-row>
  8 + </a-form>
  9 + </div>
  10 + <!-- 查询区域-END -->
  11 +
  12 + <!-- 操作按钮区域 -->
  13 + <div class="table-operator">
  14 + <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
  15 + <a-button type="primary" icon="download" @click="handleExportXls('自制件库存表')">导出</a-button>
  16 + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
  17 + <a-button type="primary" icon="import">导入</a-button>
  18 + </a-upload>
  19 + <!-- 高级查询区域 -->
  20 + <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
  21 + <a-dropdown v-if="selectedRowKeys.length > 0">
  22 + <a-menu slot="overlay">
  23 + <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
  24 + </a-menu>
  25 + <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
  26 + </a-dropdown>
  27 + </div>
  28 +
  29 + <!-- table区域-begin -->
  30 + <div>
  31 + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
  32 + <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
  33 + <a style="margin-left: 24px" @click="onClearSelected">清空</a>
  34 + </div>
  35 +
  36 + <a-table
  37 + ref="table"
  38 + size="middle"
  39 + :scroll="{x:true}"
  40 + bordered
  41 + rowKey="id"
  42 + :columns="columns"
  43 + :dataSource="dataSource"
  44 + :pagination="ipagination"
  45 + :loading="loading"
  46 + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
  47 + class="j-table-force-nowrap"
  48 + @change="handleTableChange">
  49 +
  50 + <template slot="htmlSlot" slot-scope="text">
  51 + <div v-html="text"></div>
  52 + </template>
  53 + <template slot="imgSlot" slot-scope="text">
  54 + <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
  55 + <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
  56 + </template>
  57 + <template slot="fileSlot" slot-scope="text">
  58 + <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
  59 + <a-button
  60 + v-else
  61 + :ghost="true"
  62 + type="primary"
  63 + icon="download"
  64 + size="small"
  65 + @click="downloadFile(text)">
  66 + 下载
  67 + </a-button>
  68 + </template>
  69 +
  70 + <span slot="action" slot-scope="text, record">
  71 + <a @click="handleEdit(record)">编辑</a>
  72 +
  73 + <a-divider type="vertical" />
  74 + <a-dropdown>
  75 + <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
  76 + <a-menu slot="overlay">
  77 + <a-menu-item>
  78 + <a @click="handleDetail(record)">详情</a>
  79 + </a-menu-item>
  80 + <a-menu-item>
  81 + <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
  82 + <a>删除</a>
  83 + </a-popconfirm>
  84 + </a-menu-item>
  85 + </a-menu>
  86 + </a-dropdown>
  87 + </span>
  88 +
  89 + </a-table>
  90 + </div>
  91 +
  92 + <make-inventory-modal ref="modalForm" @ok="modalFormOk"></make-inventory-modal>
  93 + </a-card>
  94 +</template>
  95 +
  96 +<script>
  97 +
  98 + import '@/assets/less/TableExpand.less'
  99 + import { mixinDevice } from '@/utils/mixin'
  100 + import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  101 + import MakeInventoryModal from './modules/MakeInventoryModal'
  102 +
  103 + export default {
  104 + name: 'MakeInventoryList',
  105 + mixins:[JeecgListMixin, mixinDevice],
  106 + components: {
  107 + MakeInventoryModal
  108 + },
  109 + data () {
  110 + return {
  111 + description: '自制件库存表管理页面',
  112 + // 表头
  113 + columns: [
  114 + {
  115 + title: '#',
  116 + dataIndex: '',
  117 + key:'rowIndex',
  118 + width:60,
  119 + align:"center",
  120 + customRender:function (t,r,index) {
  121 + return parseInt(index)+1;
  122 + }
  123 + },
  124 + {
  125 + title:'名称',
  126 + align:"center",
  127 + dataIndex: 'name'
  128 + },
  129 + {
  130 + title:'规格',
  131 + align:"center",
  132 + dataIndex: 'spec'
  133 + },
  134 + {
  135 + title:'图号',
  136 + align:"center",
  137 + dataIndex: 'drawNo'
  138 + },
  139 + {
  140 + title:'生产计划明细表id',
  141 + align:"center",
  142 + dataIndex: 'scheduDeailId'
  143 + },
  144 + {
  145 + title:'料号',
  146 + align:"center",
  147 + dataIndex: 'no'
  148 + },
  149 + {
  150 + title:'库存',
  151 + align:"center",
  152 + dataIndex: 'qty'
  153 + },
  154 + {
  155 + title:'生产计划头表id',
  156 + align:"center",
  157 + dataIndex: 'schdulerHeadId'
  158 + },
  159 + {
  160 + title:'工作令',
  161 + align:"center",
  162 + dataIndex: 'workno'
  163 + },
  164 + {
  165 + title:'产品类型',
  166 + align:"center",
  167 + dataIndex: 'productType'
  168 + },
  169 + {
  170 + title:'父料号',
  171 + align:"center",
  172 + dataIndex: 'fatherNo'
  173 + },
  174 + {
  175 + title: '操作',
  176 + dataIndex: 'action',
  177 + align:"center",
  178 + fixed:"right",
  179 + width:147,
  180 + scopedSlots: { customRender: 'action' }
  181 + }
  182 + ],
  183 + url: {
  184 + list: "/makeInventory/makeInventory/list",
  185 + delete: "/makeInventory/makeInventory/delete",
  186 + deleteBatch: "/makeInventory/makeInventory/deleteBatch",
  187 + exportXlsUrl: "/makeInventory/makeInventory/exportXls",
  188 + importExcelUrl: "makeInventory/makeInventory/importExcel",
  189 +
  190 + },
  191 + dictOptions:{},
  192 + superFieldList:[],
  193 + }
  194 + },
  195 + created() {
  196 + this.getSuperFieldList();
  197 + },
  198 + computed: {
  199 + importExcelUrl: function(){
  200 + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
  201 + },
  202 + },
  203 + methods: {
  204 + initDictConfig(){
  205 + },
  206 + getSuperFieldList(){
  207 + let fieldList=[];
  208 + fieldList.push({type:'string',value:'name',text:'名称',dictCode:''})
  209 + fieldList.push({type:'string',value:'spec',text:'规格',dictCode:''})
  210 + fieldList.push({type:'string',value:'drawNo',text:'图号',dictCode:''})
  211 + fieldList.push({type:'string',value:'scheduDeailId',text:'生产计划明细表id',dictCode:''})
  212 + fieldList.push({type:'string',value:'no',text:'料号',dictCode:''})
  213 + fieldList.push({type:'BigDecimal',value:'qty',text:'库存',dictCode:''})
  214 + fieldList.push({type:'string',value:'schdulerHeadId',text:'生产计划头表id',dictCode:''})
  215 + fieldList.push({type:'string',value:'workno',text:'工作令',dictCode:''})
  216 + fieldList.push({type:'int',value:'productType',text:'产品类型',dictCode:''})
  217 + fieldList.push({type:'string',value:'fatherNo',text:'父料号',dictCode:''})
  218 + this.superFieldList = fieldList
  219 + }
  220 + }
  221 + }
  222 +</script>
  223 +<style scoped>
  224 + @import '~@assets/less/common.less';
  225 +</style>
0 226 \ No newline at end of file
... ...
src/views/makeInventory/modules/MakeInventoryForm.vue 0 → 100644
  1 +<template>
  2 + <a-spin :spinning="confirmLoading">
  3 + <j-form-container :disabled="formDisabled">
  4 + <a-form :form="form" slot="detail">
  5 + <a-row>
  6 + <a-col :span="24">
  7 + <a-form-item label="名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
  8 + <a-input v-decorator="['name']" placeholder="请输入名称" ></a-input>
  9 + </a-form-item>
  10 + </a-col>
  11 + <a-col :span="24">
  12 + <a-form-item label="规格" :labelCol="labelCol" :wrapperCol="wrapperCol">
  13 + <a-input v-decorator="['spec']" placeholder="请输入规格" ></a-input>
  14 + </a-form-item>
  15 + </a-col>
  16 + <a-col :span="24">
  17 + <a-form-item label="图号" :labelCol="labelCol" :wrapperCol="wrapperCol">
  18 + <a-input v-decorator="['drawNo']" placeholder="请输入图号" ></a-input>
  19 + </a-form-item>
  20 + </a-col>
  21 + <a-col :span="24">
  22 + <a-form-item label="生产计划明细表id" :labelCol="labelCol" :wrapperCol="wrapperCol">
  23 + <a-input v-decorator="['scheduDeailId']" placeholder="请输入生产计划明细表id" ></a-input>
  24 + </a-form-item>
  25 + </a-col>
  26 + <a-col :span="24">
  27 + <a-form-item label="料号" :labelCol="labelCol" :wrapperCol="wrapperCol">
  28 + <a-input v-decorator="['no']" placeholder="请输入料号" ></a-input>
  29 + </a-form-item>
  30 + </a-col>
  31 + <a-col :span="24">
  32 + <a-form-item label="库存" :labelCol="labelCol" :wrapperCol="wrapperCol">
  33 + <a-input-number v-decorator="['qty']" placeholder="请输入库存" style="width: 100%" />
  34 + </a-form-item>
  35 + </a-col>
  36 + <a-col :span="24">
  37 + <a-form-item label="生产计划头表id" :labelCol="labelCol" :wrapperCol="wrapperCol">
  38 + <a-input v-decorator="['schdulerHeadId']" placeholder="请输入生产计划头表id" ></a-input>
  39 + </a-form-item>
  40 + </a-col>
  41 + <a-col :span="24">
  42 + <a-form-item label="工作令" :labelCol="labelCol" :wrapperCol="wrapperCol">
  43 + <a-input v-decorator="['workno']" placeholder="请输入工作令" ></a-input>
  44 + </a-form-item>
  45 + </a-col>
  46 + <a-col :span="24">
  47 + <a-form-item label="产品类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
  48 + <a-input-number v-decorator="['productType']" placeholder="请输入产品类型" style="width: 100%" />
  49 + </a-form-item>
  50 + </a-col>
  51 + <a-col :span="24">
  52 + <a-form-item label="父料号" :labelCol="labelCol" :wrapperCol="wrapperCol">
  53 + <a-input v-decorator="['fatherNo']" placeholder="请输入父料号" ></a-input>
  54 + </a-form-item>
  55 + </a-col>
  56 + <a-col v-if="showFlowSubmitButton" :span="24" style="text-align: center">
  57 + <a-button @click="submitForm">提 交</a-button>
  58 + </a-col>
  59 + </a-row>
  60 + </a-form>
  61 + </j-form-container>
  62 + </a-spin>
  63 +</template>
  64 +
  65 +<script>
  66 +
  67 + import { httpAction, getAction } from '@/api/manage'
  68 + import pick from 'lodash.pick'
  69 + import { validateDuplicateValue } from '@/utils/util'
  70 +
  71 + export default {
  72 + name: 'MakeInventoryForm',
  73 + components: {
  74 + },
  75 + props: {
  76 + //流程表单data
  77 + formData: {
  78 + type: Object,
  79 + default: ()=>{},
  80 + required: false
  81 + },
  82 + //表单模式:true流程表单 false普通表单
  83 + formBpm: {
  84 + type: Boolean,
  85 + default: false,
  86 + required: false
  87 + },
  88 + //表单禁用
  89 + disabled: {
  90 + type: Boolean,
  91 + default: false,
  92 + required: false
  93 + }
  94 + },
  95 + data () {
  96 + return {
  97 + form: this.$form.createForm(this),
  98 + model: {},
  99 + labelCol: {
  100 + xs: { span: 24 },
  101 + sm: { span: 5 },
  102 + },
  103 + wrapperCol: {
  104 + xs: { span: 24 },
  105 + sm: { span: 16 },
  106 + },
  107 + confirmLoading: false,
  108 + validatorRules: {
  109 + },
  110 + url: {
  111 + add: "/makeInventory/makeInventory/add",
  112 + edit: "/makeInventory/makeInventory/edit",
  113 + queryById: "/makeInventory/makeInventory/queryById"
  114 + }
  115 + }
  116 + },
  117 + computed: {
  118 + formDisabled(){
  119 + if(this.formBpm===true){
  120 + if(this.formData.disabled===false){
  121 + return false
  122 + }
  123 + return true
  124 + }
  125 + return this.disabled
  126 + },
  127 + showFlowSubmitButton(){
  128 + if(this.formBpm===true){
  129 + if(this.formData.disabled===false){
  130 + return true
  131 + }
  132 + }
  133 + return false
  134 + }
  135 + },
  136 + created () {
  137 + //如果是流程中表单,则需要加载流程表单data
  138 + this.showFlowData();
  139 + },
  140 + methods: {
  141 + add () {
  142 + this.edit({});
  143 + },
  144 + edit (record) {
  145 + this.form.resetFields();
  146 + this.model = Object.assign({}, record);
  147 + this.visible = true;
  148 + this.$nextTick(() => {
  149 + this.form.setFieldsValue(pick(this.model,'name','spec','drawNo','scheduDeailId','no','qty','schdulerHeadId','workno','productType','fatherNo'))
  150 + })
  151 + },
  152 + //渲染流程表单数据
  153 + showFlowData(){
  154 + if(this.formBpm === true){
  155 + let params = {id:this.formData.dataId};
  156 + getAction(this.url.queryById,params).then((res)=>{
  157 + if(res.success){
  158 + this.edit (res.result);
  159 + }
  160 + });
  161 + }
  162 + },
  163 + submitForm () {
  164 + const that = this;
  165 + // 触发表单验证
  166 + this.form.validateFields((err, values) => {
  167 + if (!err) {
  168 + that.confirmLoading = true;
  169 + let httpurl = '';
  170 + let method = '';
  171 + if(!this.model.id){
  172 + httpurl+=this.url.add;
  173 + method = 'post';
  174 + }else{
  175 + httpurl+=this.url.edit;
  176 + method = 'put';
  177 + }
  178 + let formData = Object.assign(this.model, values);
  179 + console.log("表单提交数据",formData)
  180 + httpAction(httpurl,formData,method).then((res)=>{
  181 + if(res.success){
  182 + that.$message.success(res.message);
  183 + that.$emit('ok');
  184 + }else{
  185 + that.$message.warning(res.message);
  186 + }
  187 + }).finally(() => {
  188 + that.confirmLoading = false;
  189 + })
  190 + }
  191 +
  192 + })
  193 + },
  194 + popupCallback(row){
  195 + this.form.setFieldsValue(pick(row,'name','spec','drawNo','scheduDeailId','no','qty','schdulerHeadId','workno','productType','fatherNo'))
  196 + },
  197 + }
  198 + }
  199 +</script>
0 200 \ No newline at end of file
... ...
src/views/makeInventory/modules/MakeInventoryModal.vue 0 → 100644
  1 +<template>
  2 + <j-modal
  3 + :title="title"
  4 + :width="width"
  5 + :visible="visible"
  6 + switchFullscreen
  7 + @ok="handleOk"
  8 + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
  9 + @cancel="handleCancel"
  10 + cancelText="关闭">
  11 + <make-inventory-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></make-inventory-form>
  12 + </j-modal>
  13 +</template>
  14 +
  15 +<script>
  16 +
  17 + import MakeInventoryForm from './MakeInventoryForm'
  18 + export default {
  19 + name: 'MakeInventoryModal',
  20 + components: {
  21 + MakeInventoryForm
  22 + },
  23 + data () {
  24 + return {
  25 + title:'',
  26 + width:800,
  27 + visible: false,
  28 + disableSubmit: false
  29 + }
  30 + },
  31 + methods: {
  32 + add () {
  33 + this.visible=true
  34 + this.$nextTick(()=>{
  35 + this.$refs.realForm.add();
  36 + })
  37 + },
  38 + edit (record) {
  39 + this.visible=true
  40 + this.$nextTick(()=>{
  41 + this.$refs.realForm.edit(record);
  42 + })
  43 + },
  44 + close () {
  45 + this.$emit('close');
  46 + this.visible = false;
  47 + },
  48 + handleOk () {
  49 + this.$refs.realForm.submitForm();
  50 + },
  51 + submitCallback(){
  52 + this.$emit('ok');
  53 + this.visible = false;
  54 + },
  55 + handleCancel () {
  56 + this.close()
  57 + }
  58 + }
  59 + }
  60 +</script>
0 61 \ No newline at end of file
... ...
src/views/makeInventory/modules/MakeInventoryModal__Style#Drawer.vue 0 → 100644
  1 +<template>
  2 + <a-drawer
  3 + :title="title"
  4 + :width="width"
  5 + placement="right"
  6 + :closable="false"
  7 + @close="close"
  8 + :visible="visible">
  9 + <make-inventory-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></make-inventory-form>
  10 + <div class="drawer-footer">
  11 + <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
  12 + <a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
  13 + </div>
  14 + </a-drawer>
  15 +</template>
  16 +
  17 +<script>
  18 +
  19 + import MakeInventoryForm from './MakeInventoryForm'
  20 +
  21 + export default {
  22 + name: 'MakeInventoryModal',
  23 + components: {
  24 + MakeInventoryForm
  25 + },
  26 + data () {
  27 + return {
  28 + title:"操作",
  29 + width:800,
  30 + visible: false,
  31 + disableSubmit: false
  32 + }
  33 + },
  34 + methods: {
  35 + add () {
  36 + this.visible=true
  37 + this.$nextTick(()=>{
  38 + this.$refs.realForm.add();
  39 + })
  40 + },
  41 + edit (record) {
  42 + this.visible=true
  43 + this.$nextTick(()=>{
  44 + this.$refs.realForm.edit(record);
  45 + });
  46 + },
  47 + close () {
  48 + this.$emit('close');
  49 + this.visible = false;
  50 + },
  51 + submitCallback(){
  52 + this.$emit('ok');
  53 + this.visible = false;
  54 + },
  55 + handleOk () {
  56 + this.$refs.realForm.submitForm();
  57 + },
  58 + handleCancel () {
  59 + this.close()
  60 + }
  61 + }
  62 + }
  63 +</script>
  64 +
  65 +<style lang="less" scoped>
  66 +/** Button按钮间距 */
  67 + .ant-btn {
  68 + margin-left: 30px;
  69 + margin-bottom: 30px;
  70 + float: right;
  71 + }
  72 + .drawer-footer{
  73 + position: absolute;
  74 + bottom: -8px;
  75 + width: 100%;
  76 + border-top: 1px solid #e8e8e8;
  77 + padding: 10px 16px;
  78 + text-align: right;
  79 + left: 0;
  80 + background: #fff;
  81 + border-radius: 0 0 2px 2px;
  82 + }
  83 +</style>
0 84 \ No newline at end of file
... ...