Purpose 9 miesięcy temu
rodzic
commit
b49fee0eb4

+ 3 - 0
src/api/ProviderApi.js

@@ -0,0 +1,3 @@
+import BaseCurdApi from './BaseCurdApi'
+
+export default new BaseCurdApi('/provider')

+ 4 - 3
src/assets/el-style.scss

@@ -95,16 +95,17 @@
 
 .filter-card {
   .el-form-item {
-    margin-bottom: 0;
+    margin-bottom: 0 !important;
   }
 }
 
+.el-form-item--mini,
 .el-form-item {
-  margin-bottom: var(--layout-gap);
+  margin-bottom: var(--layout-gap) !important;
 }
 
 .el-dialog__body {
-  padding: calc(var(--layout-gap) / 2) var(--layout-gap) var(--layout-gap) !important;
+  padding: calc(var(--layout-gap) / 2) var(--layout-gap) 0 var(--layout-gap) !important;
 }
 
 .el-dialog__footer {

+ 1 - 1
src/components/DialogImport.vue

@@ -4,7 +4,7 @@
     append-to-body
     width="600px"
   >
-    <el-form ref="form" :model="uploadData" style="height:300px">
+    <el-form ref="form" :model="uploadData" style="height:280px">
       <div class="flex center">
         <el-form-item prop="file" :rules="[{
           required: true,

+ 1 - 1
src/components/DialogOrderExport.vue

@@ -4,7 +4,7 @@
     append-to-body
     width="297mm"
   >
-    <pdf-exporter ref="pdfExporter" class="flex column layout-gap" style="min-height:100%;height:600px;margin:0 -20px;padding:20px;color:#000000;">
+    <pdf-exporter ref="pdfExporter" class="flex column layout-gap" style="min-height:100%;height:600px;margin:0 calc(var(--layout-gap) * -1);padding:var(--layout-gap);color:#000000;">
       <div class="text-center" style="font-size:16px;font-weight:600;">标签需求订单</div>
       <div class="flex valign-center">
         <div>订单编号:</div>

+ 34 - 2
src/components/DialogTagPurchase.vue

@@ -6,13 +6,45 @@
     width="800"
   >
     <el-form
+      v-if="data"
       ref="form"
       :model="data"
+      label-width="100px"
       size="mini"
     >
-      <el-collapse v-model="activeCollapseName" class="flex column layout-gap form-collapse">
+      <el-collapse v-model="activeCollapseName" class="form-collapse">
         <el-collapse-item title="采购信息" name="1" class="form-collapse-item">
-          1
+          <el-row :gutter="$$Constant.LAYOUT_GAP">
+            <el-col :span="12">
+              <el-form-item label="标签供应商" prop="provider">
+                <my-select
+                  v-model="data.providerId"
+                  :options="optionGroup.Provider ? optionGroup.Provider.list : []"
+                ></my-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="$$Constant.LAYOUT_GAP">
+            <el-col :span="12">
+              <el-form-item label="标签类型" prop="tagTypeId">
+                <my-select
+                  v-model="data.tagTypeId"
+                  :options="optionGroup.TagType ? optionGroup.TagType.list : []"
+                ></my-select>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="12">
+              <el-form-item label="标签数量" prop="number">
+                <el-input v-model="data.number" type="number" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="$$Constant.LAYOUT_GAP">
+            <el-col :span="12"></el-col>
+          </el-row>
         </el-collapse-item>
       </el-collapse>
     </el-form>

+ 1 - 1
src/components/EditButton.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="table-operator-item flex valign-center" @click="onClick">
+  <div class="table-operator-item flex valign-center" @click="onClick(data)">
     <i class="el-icon-edit"></i><span class="">编辑</span>
   </div>
 </template>

+ 47 - 0
src/components/MySelect.vue

@@ -0,0 +1,47 @@
+<template>
+  <el-select
+    v-model="selectValue"
+    style="width:100%"
+    @change="change"
+  >
+    <slot />
+    <el-option
+      v-for="option in options"
+      :key="option.id"
+      :value="option.id"
+      :label="option.name"
+    ></el-option>
+  </el-select>
+</template>
+
+<script>
+export default {
+  name: 'MySelect',
+  props: {
+    value: {
+      required: true
+    },
+    options: {
+      required: true,
+      type: Array
+    }
+  },
+  computed: {
+    selectValue: {
+      set (value) {
+        this.$emit('input', value)
+      },
+      get () {
+        return this.value
+      }
+    }
+  },
+  methods: {
+    change (...args) {
+      this.$emit('change', ...args)
+    }
+  }
+}
+</script>
+
+<style lang="scss"></style>

+ 19 - 0
src/entries/Provider.js

@@ -0,0 +1,19 @@
+import BaseCurdEntry from './BaseCurdEntry'
+import providerApi from '@/api/ProviderApi'
+
+export default class Provider extends BaseCurdEntry {
+  id
+
+  name
+
+  constructor (id, name) {
+    super()
+
+    this.id = id
+    this.name = name
+  }
+
+  static get $$api () {
+    return providerApi
+  }
+}

+ 1 - 1
src/entries/TagApply.js

@@ -72,7 +72,7 @@ export default class TagApply extends BaseCurdEntry {
 
   static $$optionTargetConfigGroup = [
     [{
-      target: TagApplyState,
+      Target: TagApplyState,
       getQuery: () => ({})
     }]
   ]

+ 30 - 7
src/entries/TagPurchase.js

@@ -2,18 +2,21 @@ import BaseCurdEntry from './BaseCurdEntry'
 import DataTimeRange from '@/utils/DataTimeRange'
 import TagType from './TagType'
 import TagPurchaseState from './TagPurchaseState'
+import Provider from './Provider'
 
 import tagPurchaseApi from '@/api/TagPurchaseApi'
 
 export default class TagPurchase extends BaseCurdEntry {
   id
 
-  dataTime
+  dataTime = new Date().format('YYYY/MM/DD')
   get formatDataTime () {
     return new Date(this.dataTime).format('YYYY-MM-DD')
   }
 
-  orderNo
+  orderNo = ''
+
+  providerId = ''
 
   tagTypeId
   get tagTypeName () {
@@ -28,15 +31,16 @@ export default class TagPurchase extends BaseCurdEntry {
     return ''
   }
 
-  number
+  number = null
 
-  amount
+  amount = null
 
   buyerName
 
   receiveDate
   get formatReceiveDate () {
-    return new Date(this.receiveDate).format('YYYY-MM-DD')
+    const { receiveDate } = this
+    return receiveDate ? new Date(receiveDate).format('YYYY-MM-DD') : ''
   }
 
   tagPurchaseStateId
@@ -52,6 +56,23 @@ export default class TagPurchase extends BaseCurdEntry {
     return ''
   }
 
+  constructor (editorInstance) {
+    super()
+    const { optionGroup } = editorInstance
+    const tagTypeConfig = optionGroup.TagType
+    const [ tagType ] = tagTypeConfig.list
+    if (tagType) {
+      this.tagTypeId = tagType[tagTypeConfig.Target.$$idProp]
+    }
+
+    console.log(optionGroup)
+    const providerConfig = optionGroup.Provider
+    const [ provider ] = providerConfig.list
+    if (provider) {
+      this.providerId = provider[providerConfig.Target.$$idProp]
+    }
+  }
+
   static get $$api () {
     return tagPurchaseApi
   }
@@ -68,15 +89,17 @@ export default class TagPurchase extends BaseCurdEntry {
 
   static $$optionTargetConfigGroup = [
     [{
-      target: TagType
+      Target: TagType
     }, {
-      target: TagPurchaseState,
+      Target: TagPurchaseState,
       setQuery: (options, query, Target) => {
         const [ option ] = options
         if (option) {
           query.tagPurchaseStateId = option[Target.$$idProp]
         }
       }
+    }, {
+      Target: Provider
     }]
   ]
 

+ 10 - 0
src/mock/index.js

@@ -2,6 +2,7 @@ import Mock from 'mockjs'
 // import TagApplyState from '@/entries/TagApplyState'
 import TagType from '@/entries/TagType'
 import TagPurchaseState from '@/entries/TagPurchaseState'
+import Provider from '@/entries/Provider'
 
 const API_BASE_PATH = process.env.API_BASE_PATH
 
@@ -36,6 +37,15 @@ const API_BASE_PATH = process.env.API_BASE_PATH
 //   }
 // })
 
+Mock.mock(`${API_BASE_PATH}/provider/list`, 'post', {
+  type: 'success',
+  data: [
+    new Provider(1, '人民电器集团有限公司'),
+    new Provider(2, '上海东生供用电器材厂'),
+    new Provider(3, '上海辉电电力设备工程有限公司')
+  ]
+})
+
 Mock.mock(`${API_BASE_PATH}/tag/type/list`, 'post', {
   type: 'success',
   data: [

+ 3 - 3
src/utils/BaseCurdEditor.js

@@ -29,7 +29,7 @@ export default (Target) => ({
     }
   },
   methods: {
-    onOpen () {
+    onOpen (data) {
       return Promise.resolve()
     },
     onGetDetail () {
@@ -41,7 +41,7 @@ export default (Target) => ({
     },
     onSave () {},
     open (data, isView) {
-      this.onOpen().then(() => {
+      this.onOpen(data).then(() => {
         if (data) {
           this.operatorTypeId = isView ? operatorTypes[2].id : operatorTypes[1].id
           this.getDetail(data)
@@ -59,7 +59,7 @@ export default (Target) => ({
     },
     getDetail (data) {
       this.onGetDetail().then(() => {
-        this.$$request(this.$$api.getDetail(data, Target)).then(data => {
+        this.$$request(this.$$api.getDetail, data, Target).then(data => {
           data = data || {}
           this.data = data
           this.clearFormValid()

+ 2 - 2
src/utils/BaseCurdList.js

@@ -115,13 +115,13 @@ export default (Target, hasPagination = true) => ({
       return Promise.all(
         optionTargetConfigs.map(
           optionTargetConfig => {
-            const optionTarget = optionTargetConfig.target
+            const optionTarget = optionTargetConfig.Target
             return this.$$request(optionTarget.$$api.getList, typeof optionTargetConfig.getQuery === 'function' ? optionTargetConfig.getQuery(optionGroup) : undefined).then(options => {
               options = bindPrototype(options, optionTarget)
               optionGroup[optionTarget.name] = {
                 list: options,
                 map: MapBuilder.getObjectMap(options, optionTarget.$$idProp),
-                target: optionTarget
+                Target: optionTarget
               }
 
               const { setQuery } = optionTargetConfig

+ 3 - 11
src/views/TagApply.vue

@@ -26,21 +26,13 @@
 
         <el-col :span="8">
           <el-form-item label="申领状态">
-            <el-select
+            <my-select
               v-model="query.tagApplyStateId"
-              style="width:100%"
+              :options="optionGroup.TagApplyState ? optionGroup.TagApplyState.list : []"
               @change="onSearchBtnClick"
             >
               <el-option label="全部" value=""></el-option>
-              <template v-if="optionGroup.TagApplyState">
-                <el-option
-                  v-for="option in optionGroup.TagApplyState.list"
-                  :key="option.id"
-                  :value="option.id"
-                  :label="option.name"
-                ></el-option>
-              </template>
-            </el-select>
+            </my-select>
           </el-form-item>
         </el-col>
       </el-row>

+ 4 - 12
src/views/TagPurchase.vue

@@ -15,20 +15,11 @@
 
           <el-col :span="8">
             <el-form-item label="采购订单状态">
-              <el-select
+              <my-select
                 v-model="query.tagPurchaseStateId"
-                style="width:100%"
+                :options="optionGroup.TagPurchaseState ? optionGroup.TagPurchaseState.list : []"
                 @change="onSearchBtnClick"
-              >
-                <template v-if="optionGroup.TagPurchaseState">
-                  <el-option
-                    v-for="option in optionGroup.TagPurchaseState.list"
-                    :key="option.id"
-                    :value="option.id"
-                    :label="option.name"
-                  ></el-option>
-                </template>
-              </el-select>
+              ></my-select>
             </el-form-item>
           </el-col>
 
@@ -180,6 +171,7 @@
     <dialog-tag-purchase
       ref="editor"
       :optionGroup="optionGroup"
+      @saved="loadList"
     ></dialog-tag-purchase>
   </div>
 </template>