瀏覽代碼

Merge remote-tracking branch 'origin/xq'

13660505945 1 月之前
父節點
當前提交
e657952edc

+ 1 - 1
jshERP-web/.env.development

@@ -5,7 +5,7 @@ ENV = 'development'
 NODE_ENV = 'development'
 
 # ERP管理系统/开发环境
-VUE_APP_BASE_API = '/stage-api'
+VUE_APP_BASE_API = ''
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 5 - 1
jshERP-web/src/components/tools/ImportFileModal.vue

@@ -20,7 +20,7 @@
         <a-row class="form-row" :gutter="24">
           <a-col :md="24" :sm="24">
             <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="第一步:">
-              <a target="_blank" :href="templateUrl"
+              <a ref="myLink" @click="importTemplate" :href="templateUrl"
                 ><b>{{ templateName }}</b></a
               >
               <p>提示:模板中的第一行请勿删除</p>
@@ -89,6 +89,10 @@ export default {
       this.templateName = templateName
       this.visible = true
     },
+    importTemplate() {
+      let link = this.$refs.myLink
+      link.setAttribute('download', '供应商模板' + '.xls')
+    },
     close() {
       this.$emit('close')
       this.visible = false

+ 65 - 6
jshERP-web/src/views/stock/TaskList.vue

@@ -3,9 +3,9 @@
     <a-col :md="24">
       <a-card :bordered="false">
         <!-- 查询区域 -->
-        <filter-form></filter-form>
+        <!-- <filter-form></filter-form> -->
         <div>
-          <a-button type="primary" icon="plus">新增盘点任务</a-button>
+          <a-button type="primary" icon="plus" @click="addTask">新增盘点任务</a-button>
           <a-button>取消盘点</a-button>
           <a-button>批量删除</a-button>
           <a-button>导出任务</a-button>
@@ -15,9 +15,9 @@
           size="middle"
           bordered
           rowKey="id"
-          :columns="taskColumns"
+          :columns="columns"
           :dataSource="dataSource"
-          :components="handleDrag(taskColumns)"
+          :components="handleDrag(columns)"
           :pagination="ipagination"
           :scroll="scroll"
           :loading="loading"
@@ -40,21 +40,80 @@
         </a-table>
       </a-card>
     </a-col>
+    <stock-modal
+      :stockVisible.sync="stockVisible"
+      :form="form"
+      :validatorRules="validatorRules"
+      ref="stockF"
+    ></stock-modal>
   </a-row>
 </template>
 
 <script>
 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import FilterForm from './components/FilterForm.vue'
+import table from './utils/table'
+import StockModal from './components/stockModal.vue'
+import { getAction } from '@/api/manage'
 
 export default {
-  components: { FilterForm },
+  components: { FilterForm, StockModal },
   mixins: [JeecgListMixin],
   data() {
     return {
-      taskColumns: [],
+      description: '盘点任务列表',
+      // 表头
+      scroll: { x: 1500 },
+      // 权限按钮集合
+      btnEnableList: [1, 1, 1],
+      queryParam: {
+        taskStatus: '',
+        number: '',
+        depotId: '',
+        createBy: '',
+      },
+      // stockTable: {
+      //   loading: false,
+      //   dataSource: [],
+      //   columns: table.taskColumns,
+      // },
+      defColumns: table.taskColumns,
+      dataSource: [],
+      form: {
+        number: '',
+        taskType: '',
+        taskName: '',
+        depotId: '',
+        creator: '',
+        createBy: '',
+        createTime: '',
+        positionRange: '',
+        materialExtendIdList: [],
+      },
+      validatorRules: {
+        taskType: { rules: [{ required: true, message: '请选择盘点类型' }] },
+        depotId: { rules: [{ required: true, message: '请选择盘点仓库' }] },
+        taskName: { rules: [{ required: true, message: '请输入盘点任务名称' }] },
+      },
+      rules: {
+        number: { rules: [{ required: true, message: '请输入盘点编号' }] },
+      },
+      organId: { rules: [{ required: true, message: '请选择盘点类型' }] },
+      organId: { rules: [{ required: true, message: '请选择盘点仓库' }] },
+      organId: { rules: [{ required: true, message: '请选择盘点负责人' }] },
+      url: {
+        list: '/stocktaking/list',
+        add: '/stocktaking/add',
+      },
+      stockVisible: false,
     }
   },
+
+  methods: {
+    addTask() {
+      this.stockVisible = true
+    },
+  },
 }
 </script>
 

+ 6 - 6
jshERP-web/src/views/stock/components/FilterForm.vue

@@ -5,7 +5,7 @@
       <a-row :gutter="24">
         <a-col :md="6" :sm="24">
           <a-form-item label="盘点状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
-            <a-select placeholder="请选择供应商" showSearch optionFilterProp="children" v-model="queryParam.organId">
+            <a-select placeholder="请选择供应商" showSearch optionFilterProp="children" v-model="queryParam.taskStatus">
               <a-select-option v-for="(item, index) in statusList" :key="index" :value="item.id">
                 {{ item.supplier }}
               </a-select-option>
@@ -16,13 +16,13 @@
           <a-form-item label="盘点单号" :labelCol="labelCol" :wrapperCol="wrapperCol">
             <a-input
               placeholder="请输入条码、名称、助记码、规格、型号等信息"
-              v-model="queryParam.materialParam"
+              v-model="queryParam.number"
             ></a-input>
           </a-form-item>
         </a-col>
         <a-col :md="6" :sm="24">
           <a-form-item label="盘点仓库" :labelCol="labelCol" :wrapperCol="wrapperCol">
-            <a-select placeholder="请选择盘点仓库" showSearch optionFilterProp="children" v-model="queryParam.organId">
+            <a-select placeholder="请选择盘点仓库" showSearch optionFilterProp="children" v-model="queryParam.depotId">
               <a-select-option v-for="(item, index) in statusList" :key="index" :value="item.id">
                 {{ item.supplier }}
               </a-select-option>
@@ -31,14 +31,14 @@
         </a-col>
         <a-col :md="6" :sm="24">
           <a-form-item label="创建人" :labelCol="labelCol" :wrapperCol="wrapperCol">
-            <a-select placeholder="请选择创建人" showSearch optionFilterProp="children" v-model="queryParam.organId">
+            <a-select placeholder="请选择创建人" showSearch optionFilterProp="children" v-model="queryParam.createBy">
               <a-select-option v-for="(item, index) in statusList" :key="index" :value="item.id">
                 {{ item.supplier }}
               </a-select-option>
             </a-select>
           </a-form-item>
         </a-col>
-        <a-col :md="6" :sm="24">
+        <!-- <a-col :md="6" :sm="24">
           <a-form-item label="商品类别" :labelCol="labelCol" :wrapperCol="wrapperCol">
             <a-select placeholder="请选择商品类别" showSearch optionFilterProp="children" v-model="queryParam.organId">
               <a-select-option v-for="(item, index) in statusList" :key="index" :value="item.id">
@@ -56,7 +56,7 @@
           <a-col :md="6" :sm="24">
             <a-button type="primary" @click="searchQuery">查询</a-button>
             <a-button style="margin-left: 8px" @click="searchReset">重置</a-button>
-          </a-col>
+          </a-col> -->
         </span>
       </a-row>
     </a-form>

+ 121 - 0
jshERP-web/src/views/stock/components/editForm.vue

@@ -0,0 +1,121 @@
+<template>
+  <a-form :model="form">
+    <a-row class="form-row" :gutter="24">
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="盘点单号">
+          <a-input placeholder="请输入" v-model="form.number" />
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="盘点类型">
+          <a-select placeholder="请选择" v-model="form.taskType" :options="taskTypeList"> </a-select>
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="盘点任务名称">
+          <a-input placeholder="请输入" v-model="form.taskName" />
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="盘点仓库">
+          <a-select placeholder="请选择" v-model="form.depotId" :options="depotList"> </a-select>
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="盘点负责人">
+          <a-select placeholder="请选择" v-model="form.creator" :options="spinnerList"> </a-select>
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="创建人">
+          <a-input placeholder="请输入" disabled v-model="form.createBy" />
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="创建时间">
+          <a-input placeholder="请输入" disabled v-model="form.createTime" />
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="盘点库位范围">
+          <a-input placeholder="请输入" v-model="form.positionRange" />
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="商品数量">
+          <a-input placeholder="请输入" v-model="form.materialCount" />
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="盘点状态">
+          <!-- <a-input placeholder="请输入" v-model="form.taskStatus" /> -->
+          <a-select placeholder="请选择" v-model="form.taskStatus" :options="taskStatusList"> </a-select>
+        </a-form-item>
+      </a-col>
+      <!-- <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="盘点人">
+          <a-input placeholder="请输入" v-decorator.trim="['number']" />
+        </a-form-item>
+      </a-col>
+      <a-col :lg="6" :md="12" :sm="24" class="form-col">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="完成时间">
+          <a-input placeholder="请输入" v-decorator.trim="['number']" />
+        </a-form-item>
+      </a-col> -->
+    </a-row>
+  </a-form>
+</template>
+
+<script>
+export default {
+  name: 'EditForm',
+  props: {
+    form: {
+      type: Object,
+      default: null,
+    },
+    validatorRules: {
+      type: Object,
+      default: () => {
+        return {}
+      },
+    },
+    spinnerList: {
+      type: Array,
+      default: () => {
+        return []
+      },
+    },
+    depotList: {
+      type: Array,
+      default: () => {
+        return []
+      },
+    },
+  },
+  data() {
+    return {
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 8 },
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 },
+      },
+      taskTypeList: [
+        { value: 1, label: '全盘' },
+        { value: 2, label: '抽盘' },
+      ],
+      taskStatusList: [
+        { value: 0, label: '未开始' },
+        { value: 1, label: '进行中' },
+        { value: 2, label: '已完成' },
+        { value: 3, label: '已取消' },
+      ],
+    }
+  },
+}
+</script>
+
+<style></style>

+ 166 - 0
jshERP-web/src/views/stock/components/stockModal.vue

@@ -0,0 +1,166 @@
+<template>
+  <div>
+    <a-modal
+      :visible="stockVisible"
+      :title="title"
+      @ok="handleOk"
+      @cancel="handleCancel"
+      width="90%"
+      wrapClassName="full-modal"
+    >
+      <a-spin :spinning="confirmLoading">
+        <edit-form
+          :spinnerList="spinnerList"
+          :depotList="deoptData"
+          :form="form"
+          :validatorRules="validatorRules"
+        ></edit-form>
+        <div v-if="form.taskType === 2">
+          <a-button style="margin-bottom: 6px" type="primary" @click="onChangeGoods">选择商品</a-button>
+          <a-table
+            ref="table"
+            size="middle"
+            bordered
+            rowKey="id"
+            :columns="columns"
+            :dataSource="dataSource"
+            :components="handleDrag(columns)"
+            :pagination="ipagination"
+            :loading="loading"
+            @change="handleTableChange"
+          >
+            <!-- <span slot="action" slot-scope="text, record">
+          <a>查看</a>
+          <a>编辑</a>
+          <a-divider v-if="btnEnableList.indexOf(1) > -1" type="vertical" />
+          <a-popconfirm title="确定删除吗?">
+            <a>删除</a>
+          </a-popconfirm>
+        </span>
+        <template slot="customName" slot-scope="text, record">
+          {{ record.name }}
+          <a-tag v-if="record.enableSerialNumber == 1" color="orange">序</a-tag>
+          <a-tag v-if="record.enableBatchNumber == 1" color="orange">批</a-tag>
+        </template> -->
+          </a-table>
+        </div>
+      </a-spin>
+    </a-modal>
+    <j-select-material-modal @ok="getGoods" ref="selectModal" :multi="true"></j-select-material-modal>
+  </div>
+</template>
+
+<script>
+import editForm from './editForm.vue'
+import table from '../utils/table'
+import JSelectMaterialModal from '../../../components/jeecgbiz/modal/JSelectMaterialModal.vue'
+import { getAction, postAction } from '@/api/manage'
+
+export default {
+  components: { editForm, JSelectMaterialModal },
+  props: {
+    form: {
+      type: Object,
+      default: null,
+    },
+    validatorRules: {
+      type: Object,
+      default: () => {
+        return {}
+      },
+    },
+    stockVisible: {
+      type: Boolean,
+      default: false,
+    },
+    title: {
+      type: String,
+      default: '新增',
+    },
+  },
+  data() {
+    return {
+      //   validatorRules: {
+      //     organId: { rules: [{ required: true, message: '请选择盘点类型' }] },
+      //     organId: { rules: [{ required: true, message: '请选择盘点仓库' }] },
+      //     organId: { rules: [{ required: true, message: '请选择盘点负责人' }] },
+      //   },
+      width: '1600px',
+      visible: false,
+      confirmLoading: false,
+      prefixNo: '',
+      //   form: {},
+
+      loading: false,
+      dataSource: [],
+      columns: table.goodsColums,
+      url: {
+        spinnerList: '/stocktaking/creatorSpinnerList',
+        depotList: '/depot/findDepotByCurrentUser',
+        add: '/stocktaking/add',
+      },
+      spinnerList: [],
+      deoptData: [],
+    }
+  },
+  watch: {
+    stockVisible(val) {
+      if (val) {
+        this.getSpinnerList()
+        this.getDepotList()
+      }
+    },
+    form: {
+      handler(val) {
+        if (val.taskType === 1) {
+          val.materialExtendIdList = []
+        }
+      },
+      deep: true,
+    },
+  },
+  methods: {
+    handleCancel() {
+      this.$emit('update:stockVisible', false)
+    },
+    handleOk() {
+      postAction(this.url.add, this.form).then((res) => {
+        console.log('222222222222222222222', res)
+
+        // this.$emit('ok')
+      })
+    },
+    onChangeGoods() {
+      this.$refs.selectModal.showModal()
+    },
+    getSpinnerList() {
+      getAction(this.url.spinnerList).then((res) => {
+        this.spinnerList = res.data || []
+      })
+    },
+
+    getDepotList() {
+      getAction(this.url.depotList).then((res) => {
+        this.deoptData = res.data.map((item) => {
+          return {
+            label: item.depotName,
+            value: item.id,
+          }
+        })
+      })
+    },
+    getGoods(rows, ids) {
+      this.form.materialExtendIdList = ids.split(',').filter((item) => item)
+      this.dataSource = rows
+    },
+
+    handleDrag() {},
+    ipagination() {},
+    selectedRowKeys() {},
+    onSelectChange() {},
+    handleTableChange() {},
+  },
+}
+</script>
+
+<style></style>

+ 82 - 0
jshERP-web/src/views/stock/utils/table.js

@@ -0,0 +1,82 @@
+const table = {
+  taskColumns: [
+    {
+      title: '操作',
+      dataIndex: 'action',
+      scopedSlots: { customRender: 'action' },
+    },
+    {
+      title: '盘点任务编号',
+      dataIndex: 'num',
+    },
+
+    {
+      title: '盘点任务名称',
+      dataIndex: 'name',
+    },
+    {
+      title: '盘点类型',
+      dataIndex: 'type',
+    },
+    {
+      title: '盘点仓库',
+      dataIndex: 'num',
+    },
+    {
+      title: '商品数量',
+      dataIndex: 'time',
+    },
+    {
+      title: '盘点库位范围',
+      dataIndex: 'status',
+    },
+    {
+      title: '创建人',
+      dataIndex: 'person',
+    },
+    {
+      title: '创建时间',
+      dataIndex: 'status',
+    },
+    {
+      title: '盘点负责人',
+      dataIndex: 'person',
+    },
+    {
+      title: '盘点状态',
+      dataIndex: 'remark',
+    },
+    {
+      title: '完成时间',
+      dataIndex: 'remark',
+    },
+  ],
+  goodsColums: [
+    {
+      title: '操作',
+      dataIndex: 'action',
+      align: 'center',
+      width: 60,
+      scopedSlots: { customRender: 'action' },
+    },
+    // { dataIndex: 'mBarCode', title: '条码', scopedSlots: { customRender: 'customBarCode' } },
+    { dataIndex: 'batchNumber', title: '批次号' },
+    { dataIndex: 'name', title: '名称', scopedSlots: { customRender: 'customName' } },
+    { dataIndex: 'categoryName', title: '类别' },
+    { dataIndex: 'standard', title: '规格' },
+    { dataIndex: 'model', title: '型号' },
+    { dataIndex: 'color', title: '颜色' },
+    { dataIndex: 'brand', title: '品牌' },
+    { dataIndex: 'supplierName', title: '供应商' },
+    { dataIndex: 'unit', title: '单位' },
+    { dataIndex: 'sku', title: '多属性' },
+    { dataIndex: 'stock', title: '库存' },
+    { dataIndex: 'productionDate', title: '生产日期' },
+    { dataIndex: 'expiryNum', title: '保质期' },
+    { dataIndex: 'barCode', title: '商品条码' },
+    { dataIndex: 'depotId', title: '仓库名称' },
+    { dataIndex: 'position', title: '仓库货架' },
+  ],
+}
+
+export default table