瀏覽代碼

Merge branch 'master' into master_huangjunjie

huang 1 周之前
父節點
當前提交
cf57159ea8

+ 12 - 0
docs/new_sql.sql

@@ -0,0 +1,12 @@
+
+-- 供应商信息表  新增供应商分级、结算方式、账单周期天数、采购对接人、到货天数、发票类型、合同附件
+ALTER TABLE jsh_supplier
+ADD COLUMN supplier_level VARCHAR(255) DEFAULT '' COMMENT '供应商分级',
+ADD COLUMN settlement_method VARCHAR(1) DEFAULT '' COMMENT '结算方式(0-周结, 1-现结/按单, 2-预付款, 3-月结)',
+ADD COLUMN billing_cycle_days INT DEFAULT NULL COMMENT '账单周期天数(单位:天)',
+ADD COLUMN procurement_contact VARCHAR(100) DEFAULT '' COMMENT '采购对接人姓名',
+ADD COLUMN delivery_days INT DEFAULT NULL COMMENT '到货天数(单位:天)',
+ADD COLUMN invoice_type VARCHAR(1)  DEFAULT '' COMMENT '发票类型:0-普通发票, 1-增值税专用发票',
+ADD COLUMN contract_upload VARCHAR(1000) DEFAULT '' COMMENT '合同附件存储路径';
+
+

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

@@ -2,7 +2,7 @@
 # 开发环境配置
 ENV = 'development'
 
-NODE_ENV = development
+NODE_ENV = 'development'
 
 # ERP管理系统/开发环境
 VUE_APP_BASE_API = '/stage-api'

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

@@ -1,7 +1,7 @@
 # 页面标题
 VUE_APP_TITLE = ERP系统
 
-NODE_ENV = production
+NODE_ENV = 'production'
 
 # 测试环境配置
 ENV = 'staging'

+ 0 - 9
jshERP-web/postcss.config.js

@@ -1,9 +0,0 @@
-// https://github.com/michael-ciniawsky/postcss-load-config
-
-module.exports = {
-  plugins: {
-    tailwindcss: {},
-    // to edit target browsers: use "browserslist" field in package.json
-    autoprefixer: {},
-  },
-}

二進制
jshERP-web/public/doc/vendor_template.xls


+ 0 - 3
jshERP-web/src/assets/input.css

@@ -1,3 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;

+ 24 - 9
jshERP-web/src/components/jeecg/JUpload.vue

@@ -39,7 +39,9 @@
           <a-icon type="plus" />
           <div class="ant-upload-text">{{ text }}</div>
         </div>
-        <a-button v-else-if="buttonVisible"> <a-icon type="upload" />{{ text }} </a-button>
+        <a-button v-else-if="buttonVisible" :type="btnType">
+          <a-icon v-if="isIcon" type="upload" />{{ text }}
+        </a-button>
       </template>
     </a-upload>
     <a-modal :visible="previewVisible" :width="1000" :footer="null" @cancel="handleCancel">
@@ -96,6 +98,16 @@ export default {
       required: false,
       default: '点击上传',
     },
+    btnType: {
+      type: String,
+      required: false,
+      default: 'default',
+    },
+    isIcon: {
+      type: Boolean,
+      required: false,
+      default: true,
+    },
     fileType: {
       type: String,
       required: false,
@@ -238,14 +250,15 @@ export default {
       let path = ''
       if (!uploadFiles || uploadFiles.length == 0) {
         path = ''
-      }
-      let arr = []
+      } else {
+        let arr = []
 
-      for (var a = 0; a < uploadFiles.length; a++) {
-        arr.push(uploadFiles[a].response.data)
-      }
-      if (arr.length > 0) {
-        path = arr.join(',')
+        for (let a = 0; a < uploadFiles.length; a++) {
+          arr.push(uploadFiles[a].response.data)
+        }
+        if (arr.length > 0) {
+          path = arr.join(',')
+        }
       }
       this.$emit('change', path)
     },
@@ -298,7 +311,9 @@ export default {
       if (info.file.status === 'done' || info.file.status === 'removed') {
         //returnUrl为true时仅返回文件路径
         if (this.returnUrl) {
-          this.handlePathChange()
+          setTimeout(() => {
+            this.handlePathChange()
+          }, 500)
         } else {
           //returnUrl为false时返回文件名称、文件路径及文件大小
           this.newFileList = []

+ 0 - 1
jshERP-web/src/main.js

@@ -17,7 +17,6 @@ import Print from 'vue-print-nb-jeecg'
 import preview from 'vue-photo-preview'
 import 'vue-photo-preview/dist/skin.css'
 import 'intro.js/introjs.css'
-import './tailwind.css'
 import {
   ACCESS_TOKEN,
   DEFAULT_COLOR,

+ 0 - 322
jshERP-web/src/tailwind.css

@@ -1,322 +0,0 @@
-*, ::before, ::after {
-  --tw-border-spacing-x: 0;
-  --tw-border-spacing-y: 0;
-  --tw-translate-x: 0;
-  --tw-translate-y: 0;
-  --tw-rotate: 0;
-  --tw-skew-x: 0;
-  --tw-skew-y: 0;
-  --tw-scale-x: 1;
-  --tw-scale-y: 1;
-  --tw-pan-x:  ;
-  --tw-pan-y:  ;
-  --tw-pinch-zoom:  ;
-  --tw-scroll-snap-strictness: proximity;
-  --tw-gradient-from-position:  ;
-  --tw-gradient-via-position:  ;
-  --tw-gradient-to-position:  ;
-  --tw-ordinal:  ;
-  --tw-slashed-zero:  ;
-  --tw-numeric-figure:  ;
-  --tw-numeric-spacing:  ;
-  --tw-numeric-fraction:  ;
-  --tw-ring-inset:  ;
-  --tw-ring-offset-width: 0px;
-  --tw-ring-offset-color: #fff;
-  --tw-ring-color: rgb(59 130 246 / 0.5);
-  --tw-ring-offset-shadow: 0 0 #0000;
-  --tw-ring-shadow: 0 0 #0000;
-  --tw-shadow: 0 0 #0000;
-  --tw-shadow-colored: 0 0 #0000;
-  --tw-blur:  ;
-  --tw-brightness:  ;
-  --tw-contrast:  ;
-  --tw-grayscale:  ;
-  --tw-hue-rotate:  ;
-  --tw-invert:  ;
-  --tw-saturate:  ;
-  --tw-sepia:  ;
-  --tw-drop-shadow:  ;
-  --tw-backdrop-blur:  ;
-  --tw-backdrop-brightness:  ;
-  --tw-backdrop-contrast:  ;
-  --tw-backdrop-grayscale:  ;
-  --tw-backdrop-hue-rotate:  ;
-  --tw-backdrop-invert:  ;
-  --tw-backdrop-opacity:  ;
-  --tw-backdrop-saturate:  ;
-  --tw-backdrop-sepia:  
-}
-
-::-webkit-backdrop {
-  --tw-border-spacing-x: 0;
-  --tw-border-spacing-y: 0;
-  --tw-translate-x: 0;
-  --tw-translate-y: 0;
-  --tw-rotate: 0;
-  --tw-skew-x: 0;
-  --tw-skew-y: 0;
-  --tw-scale-x: 1;
-  --tw-scale-y: 1;
-  --tw-pan-x:  ;
-  --tw-pan-y:  ;
-  --tw-pinch-zoom:  ;
-  --tw-scroll-snap-strictness: proximity;
-  --tw-gradient-from-position:  ;
-  --tw-gradient-via-position:  ;
-  --tw-gradient-to-position:  ;
-  --tw-ordinal:  ;
-  --tw-slashed-zero:  ;
-  --tw-numeric-figure:  ;
-  --tw-numeric-spacing:  ;
-  --tw-numeric-fraction:  ;
-  --tw-ring-inset:  ;
-  --tw-ring-offset-width: 0px;
-  --tw-ring-offset-color: #fff;
-  --tw-ring-color: rgb(59 130 246 / 0.5);
-  --tw-ring-offset-shadow: 0 0 #0000;
-  --tw-ring-shadow: 0 0 #0000;
-  --tw-shadow: 0 0 #0000;
-  --tw-shadow-colored: 0 0 #0000;
-  --tw-blur:  ;
-  --tw-brightness:  ;
-  --tw-contrast:  ;
-  --tw-grayscale:  ;
-  --tw-hue-rotate:  ;
-  --tw-invert:  ;
-  --tw-saturate:  ;
-  --tw-sepia:  ;
-  --tw-drop-shadow:  ;
-  --tw-backdrop-blur:  ;
-  --tw-backdrop-brightness:  ;
-  --tw-backdrop-contrast:  ;
-  --tw-backdrop-grayscale:  ;
-  --tw-backdrop-hue-rotate:  ;
-  --tw-backdrop-invert:  ;
-  --tw-backdrop-opacity:  ;
-  --tw-backdrop-saturate:  ;
-  --tw-backdrop-sepia:  
-}
-
-::backdrop {
-  --tw-border-spacing-x: 0;
-  --tw-border-spacing-y: 0;
-  --tw-translate-x: 0;
-  --tw-translate-y: 0;
-  --tw-rotate: 0;
-  --tw-skew-x: 0;
-  --tw-skew-y: 0;
-  --tw-scale-x: 1;
-  --tw-scale-y: 1;
-  --tw-pan-x:  ;
-  --tw-pan-y:  ;
-  --tw-pinch-zoom:  ;
-  --tw-scroll-snap-strictness: proximity;
-  --tw-gradient-from-position:  ;
-  --tw-gradient-via-position:  ;
-  --tw-gradient-to-position:  ;
-  --tw-ordinal:  ;
-  --tw-slashed-zero:  ;
-  --tw-numeric-figure:  ;
-  --tw-numeric-spacing:  ;
-  --tw-numeric-fraction:  ;
-  --tw-ring-inset:  ;
-  --tw-ring-offset-width: 0px;
-  --tw-ring-offset-color: #fff;
-  --tw-ring-color: rgb(59 130 246 / 0.5);
-  --tw-ring-offset-shadow: 0 0 #0000;
-  --tw-ring-shadow: 0 0 #0000;
-  --tw-shadow: 0 0 #0000;
-  --tw-shadow-colored: 0 0 #0000;
-  --tw-blur:  ;
-  --tw-brightness:  ;
-  --tw-contrast:  ;
-  --tw-grayscale:  ;
-  --tw-hue-rotate:  ;
-  --tw-invert:  ;
-  --tw-saturate:  ;
-  --tw-sepia:  ;
-  --tw-drop-shadow:  ;
-  --tw-backdrop-blur:  ;
-  --tw-backdrop-brightness:  ;
-  --tw-backdrop-contrast:  ;
-  --tw-backdrop-grayscale:  ;
-  --tw-backdrop-hue-rotate:  ;
-  --tw-backdrop-invert:  ;
-  --tw-backdrop-opacity:  ;
-  --tw-backdrop-saturate:  ;
-  --tw-backdrop-sepia:  
-}
-
-.container {
-  width: 100%
-}
-
-@media (min-width: 640px) {
-  .container {
-    max-width: 640px
-  }
-}
-
-@media (min-width: 768px) {
-  .container {
-    max-width: 768px
-  }
-}
-
-@media (min-width: 1024px) {
-  .container {
-    max-width: 1024px
-  }
-}
-
-@media (min-width: 1280px) {
-  .container {
-    max-width: 1280px
-  }
-}
-
-@media (min-width: 1536px) {
-  .container {
-    max-width: 1536px
-  }
-}
-
-.visible {
-  visibility: visible
-}
-
-.collapse {
-  visibility: collapse
-}
-
-.static {
-  position: static
-}
-
-.fixed {
-  position: fixed
-}
-
-.absolute {
-  position: absolute
-}
-
-.relative {
-  position: relative
-}
-
-.sticky {
-  position: sticky
-}
-
-.block {
-  display: block
-}
-
-.inline {
-  display: inline
-}
-
-.flex {
-  display: -webkit-box;
-  display: -ms-flexbox;
-  display: flex
-}
-
-.table {
-  display: table
-}
-
-.grid {
-  display: grid
-}
-
-.hidden {
-  display: none
-}
-
-.shrink {
-  -ms-flex-negative: 1;
-      flex-shrink: 1
-}
-
-.flex-grow {
-  -webkit-box-flex: 1;
-      -ms-flex-positive: 1;
-          flex-grow: 1
-}
-
-.transform {
-  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
-          transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
-}
-
-.resize {
-  resize: both
-}
-
-.flex-wrap {
-  -ms-flex-wrap: wrap;
-      flex-wrap: wrap
-}
-
-.border {
-  border-width: 1px
-}
-
-.italic {
-  font-style: italic
-}
-
-.text-orange-500 {
-  --tw-text-opacity: 1;
-  color: rgb(249 115 22 / var(--tw-text-opacity))
-}
-
-.underline {
-  text-decoration-line: underline
-}
-
-.line-through {
-  text-decoration-line: line-through
-}
-
-.shadow {
-  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
-  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
-  -webkit-box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
-          box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
-}
-
-.outline {
-  outline-style: solid
-}
-
-.blur {
-  --tw-blur: blur(8px);
-  -webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
-          filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
-}
-
-.invert {
-  --tw-invert: invert(100%);
-  -webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
-          filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
-}
-
-.filter {
-  -webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
-          filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
-}
-
-.transition {
-  -webkit-transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, -webkit-box-shadow, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;
-  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, -webkit-box-shadow, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;
-  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
-  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-box-shadow, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;
-  -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
-          transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
-  -webkit-transition-duration: 150ms;
-          transition-duration: 150ms
-}

+ 12 - 8
jshERP-web/src/utils/util.js

@@ -103,16 +103,20 @@ function generateChildRouters(data) {
   for (let item of data) {
     let componentPath = ''
     item.route = '1'
-    if (item.component.indexOf('layouts') >= 0) {
-      componentPath = (resolve) => require([`@/components${item.component}`], resolve)
+    if (process.env.NODE_ENV === 'production') {
+      if (item.component.indexOf('layouts') >= 0) {
+        componentPath = () => import('@/components' + item.component)
+      } else {
+        componentPath = () => import('@/views' + item.component)
+      }
     } else {
-      componentPath = (resolve) => require([`@/views${item.component}`], resolve)
+      if (item.component.indexOf('layouts') >= 0) {
+        componentPath = (resolve) => require([`@/components${item.component}`], resolve)
+      } else {
+        componentPath = (resolve) => require([`@/views${item.component}`], resolve)
+      }
     }
-    // if (item.component.indexOf('layouts') >= 0) {
-    //   componentPath = () => import('@/components' + item.component)
-    // } else {
-    //   componentPath = () => import('@/views' + item.component)
-    // }
+
     // eslint-disable-next-line
     let URL = (item.url || '').replace(/{{([^}}]+)?}}/g, (s1, s2) => eval(s2)) // URL支持{{ window.xxx }}占位符变量
     if (isURL(URL)) {

+ 46 - 2
jshERP-web/src/views/system/VendorList.vue

@@ -77,6 +77,12 @@
               <a-tag v-if="enabled" color="green">启用</a-tag>
               <a-tag v-if="!enabled" color="orange">禁用</a-tag>
             </template>
+            <template slot="settlementMethod" slot-scope="text, record">
+              {{ formateSettle(record.settlementMethod) }}
+            </template>
+            <template slot="invoiceType" slot-scope="text, record">
+              {{ formateInVoiceType(record.invoiceType) }}
+            </template>
           </a-table>
         </div>
         <!-- table区域-end -->
@@ -145,9 +151,25 @@ export default {
         { title: '手机号码', dataIndex: 'telephone', width: 100, align: 'left' },
         { title: '联系电话', dataIndex: 'phoneNum', width: 100, align: 'left' },
         { title: '电子邮箱', dataIndex: 'email', width: 150, align: 'left' },
-        { title: '期初应付', dataIndex: 'beginNeedPay', width: 80, align: 'left' },
-        { title: '期末应付', dataIndex: 'allNeedPay', width: 80, align: 'left' },
         { title: '税率(%)', dataIndex: 'taxRate', width: 80, align: 'left' },
+        { title: '供应商分级', dataIndex: 'supplierLevel', width: 100, align: 'left' },
+        {
+          title: '结算方式',
+          dataIndex: 'settlementMethod',
+          width: 80,
+          align: 'left',
+          scopedSlots: { customRender: 'settlementMethod' },
+        },
+        { title: '账单周期', dataIndex: 'billingCycleDays', width: 80, align: 'left' },
+        { title: '采购对接人', dataIndex: 'procurementContact', width: 100, align: 'left' },
+        { title: '到货天数', dataIndex: 'deliverydays', width: 80, align: 'left' },
+        {
+          title: '发票类型',
+          dataIndex: 'invoiceType',
+          width: 80,
+          align: 'left',
+          scopedSlots: { customRender: 'invoiceType' },
+        },
         { title: '排序', dataIndex: 'sort', width: 60, align: 'left' },
         {
           title: '状态',
@@ -195,6 +217,28 @@ export default {
         this.$refs.modalForm.isReadOnly = true
       }
     },
+    formateSettle(val) {
+      switch (val) {
+        case '0':
+          return '周结'
+        case '1':
+          return '现结/按单'
+        case '2':
+          return '预付款'
+        case '3':
+          return '月结'
+      }
+    },
+    formateInVoiceType(val) {
+      switch (val) {
+        case '1':
+          return '增值税专用发票'
+        case '0':
+          return '普通发票'
+        default:
+          return ''
+      }
+    },
   },
 }
 </script>

+ 95 - 12
jshERP-web/src/views/system/modules/VendorModal.vue

@@ -49,31 +49,27 @@
                 <a-input placeholder="请输入电子邮箱" v-decorator.trim="['email']" />
               </a-form-item>
             </a-col>
-            <a-col :span="24 / 2">
+            <!-- <a-col :span="24 / 2">
               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="传真">
                 <a-input placeholder="请输入传真" v-decorator.trim="['fax']" />
               </a-form-item>
-            </a-col>
-            <a-col :span="24 / 2">
+            </a-col> -->
+            <!-- <a-col :span="24 / 2">
               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="期初应付">
                 <a-input placeholder="请输入期初应付" v-decorator.trim="['beginNeedPay']" />
               </a-form-item>
-            </a-col>
-            <a-col :span="24 / 2">
+            </a-col> -->
+            <!-- <a-col :span="24 / 2">
               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="期末应付">
                 <a-input v-decorator.trim="['allNeedPay']" :readOnly="true" />
               </a-form-item>
-            </a-col>
+            </a-col> -->
             <a-col :span="24 / 2">
               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="纳税人识别号">
                 <a-input placeholder="请输入纳税人识别号" v-decorator.trim="['taxNum']" />
               </a-form-item>
             </a-col>
-            <a-col :span="24 / 2">
-              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="税率(%)">
-                <a-input-number style="width: 100%" placeholder="请输入税率" v-decorator.trim="['taxRate']" />
-              </a-form-item>
-            </a-col>
+
             <a-col :span="24 / 2">
               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="开户行">
                 <a-input placeholder="请输入开户行" v-decorator.trim="['bankName']" />
@@ -95,10 +91,58 @@
               </a-form-item>
             </a-col>
             <a-col :span="24 / 2">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="供应商分级">
+                <a-input placeholder="请输入供应商分级" v-decorator.trim="['supplierLevel']" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="24 / 2">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="结算方式">
+                <a-select
+                  v-decorator.trim="['settlementMethod']"
+                  :options="settleOptions"
+                  placeholder="请选择结算方式"
+                ></a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :span="24 / 2">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="账单周期">
+                <a-input placeholder="请输入账单周期" v-decorator.trim="['billingCycleDays']" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="24 / 2">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="采购对接人">
+                <a-input placeholder="请输入采购对接人" v-decorator.trim="['procurementContact']" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="24 / 2">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="到货天数">
+                <a-input placeholder="请输入到货天数" v-decorator.trim="['deliverydays']" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="24 / 2">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="开具发票情况">
+                <a-select
+                  v-decorator.trim="['invoiceType']"
+                  :options="invoiceOptions"
+                  placeholder="请选择发票类型"
+                ></a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :span="24 / 2">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="税率(%)">
+                <a-input-number style="width: 100%" placeholder="请输入税率" v-decorator.trim="['taxRate']" />
+              </a-form-item>
+            </a-col>
+            <a-col :span="24 / 2">
               <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="备注">
                 <a-textarea :rows="2" placeholder="请输入备注" v-decorator.trim="['description']" />
               </a-form-item>
             </a-col>
+            <a-col :span="24 / 2">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="合同附件">
+                <j-upload v-decorator.trim="['contractUpload']" bizPath="bill"></j-upload>
+              </a-form-item>
+            </a-col>
           </a-row>
         </a-form>
       </a-spin>
@@ -110,11 +154,15 @@ import pick from 'lodash.pick'
 import { addSupplier, editSupplier, checkSupplier } from '@/api/api'
 import { autoJumpNextInput } from '@/utils/util'
 import { mixinDevice } from '@/utils/mixin'
+import JUpload from '@/components/jeecg/JUpload'
+
 export default {
+  components: { JUpload },
   name: 'VendorModal',
   mixins: [mixinDevice],
   data() {
     return {
+      model: {},
       title: '操作',
       visible: false,
       model: {},
@@ -138,6 +186,34 @@ export default {
           ],
         },
       },
+      settleOptions: [
+        {
+          value: '0',
+          label: '周结',
+        },
+        {
+          value: '1',
+          label: '现结/按单',
+        },
+        {
+          value: '2',
+          label: '预付款',
+        },
+        {
+          value: '3',
+          label: '月结',
+        },
+      ],
+      invoiceOptions: [
+        {
+          value: '1',
+          label: '增值税专用发票',
+        },
+        {
+          value: '0',
+          label: '普通发票',
+        },
+      ],
     }
   },
   created() {},
@@ -167,7 +243,14 @@ export default {
             'accountNumber',
             'address',
             'sort',
-            'description'
+            'description',
+            'supplierLevel',
+            'settlementMethod',
+            'billingCycleDays',
+            'procurementContact',
+            'deliverydays',
+            'invoiceType',
+            'contractUpload'
           )
         )
         autoJumpNextInput('vendorModal')

+ 0 - 12
jshERP-web/tailwind.config.js

@@ -1,12 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-module.exports = {
-  content: ['./src/**/*.{vue,js,ts,jsx,tsx}', './public/index.html'],
-  theme: {
-    extend: {},
-  },
-  plugins: [],
-  corePlugins: {
-    preflight: false, // 关闭默认样式
-  },
-}
-

+ 1 - 1
jshERP-web/vue.config.js

@@ -54,7 +54,7 @@ module.exports = {
     open: true,
     proxy: {
       [process.env.VUE_APP_BASE_API]: {
-        target: 'http://localhost:8082', // 请求本地 需要jshERP-boot后台项目
+        target: 'http://localhost:8080', // 请求本地 需要jshERP-boot后台项目
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: '',

+ 108 - 0
src/main/java/com/jsh/erp/datasource/entities/Supplier.java

@@ -2,57 +2,109 @@ package com.jsh.erp.datasource.entities;
 
 import java.math.BigDecimal;
 
+/**
+ * 供应商/客户信息表实体类
+ *
+ */
 public class Supplier {
+
+    /** 主键 */
     private Long id;
 
+    /** 供应商名称 */
     private String supplier;
 
+    /** 供应商联系人 */
     private String contacts;
 
+    /** 联系电话 */
     private String phoneNum;
 
+    /** 电子邮箱 */
     private String email;
 
+    /** 备注 */
     private String description;
 
+    /** 是否系统自带 0==系统 1==非系统 */
     private Byte isystem;
 
+    /** 类型 */
     private String type;
 
+    /** 启用 */
     private Boolean enabled;
 
+    /** 预收款 */
     private BigDecimal advanceIn;
 
+    /** 期初应收 */
     private BigDecimal beginNeedGet;
 
+    /** 期初应付 */
     private BigDecimal beginNeedPay;
 
+    /** 累计应收 */
     private BigDecimal allNeedGet;
 
+    /** 累计应付 */
     private BigDecimal allNeedPay;
 
+    /** 传真 */
     private String fax;
 
+    /** 手机 */
     private String telephone;
 
+    /** 地址 */
     private String address;
 
+    /** 纳税人识别号 */
     private String taxNum;
 
+    /** 开户行 */
     private String bankName;
 
+    /** 账号 */
     private String accountNumber;
 
+    /** 税率 */
     private BigDecimal taxRate;
 
+    /** 排序 */
     private String sort;
 
+    /** 操作员 */
     private Long creator;
 
+    /** 租户id */
     private Long tenantId;
 
+    /** 删除标记,0未删除,1删除 */
     private String deleteFlag;
 
+    /** 供应商分级 */
+    private String supplierLevel;
+
+    /** 结算方式(0-周结, 1-现结/按单, 2-预付款, 3-月结) */
+    private String settlementMethod;
+
+    /** 账单周期天数(单位:天) */
+    private Integer billingCycleDays;
+
+    /** 采购对接人姓名 */
+    private String procurementContact;
+
+    /** 到货天数(单位:天) */
+    private Integer deliverydays;
+
+    /** 发票类型:0-普通发票, 1-增值税专用发票 */
+    private String invoiceType;
+
+    /** 合同附件存储路径 */
+    private String contractUpload;
+
+
     public Long getId() {
         return id;
     }
@@ -252,4 +304,60 @@ public class Supplier {
     public void setDeleteFlag(String deleteFlag) {
         this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim();
     }
+
+    public String getSupplierLevel() {
+        return supplierLevel;
+    }
+
+    public void setSupplierLevel(String supplierLevel) {
+        this.supplierLevel = supplierLevel == null ? null : supplierLevel.trim();
+    }
+
+    public String getSettlementMethod() {
+        return settlementMethod;
+    }
+
+    public void setSettlementMethod(String settlementMethod) {
+        this.settlementMethod = settlementMethod == null ? null : settlementMethod.trim();;
+    }
+
+    public Integer getBillingCycleDays() {
+        return billingCycleDays;
+    }
+
+    public void setBillingCycleDays(Integer billingCycleDays) {
+        this.billingCycleDays = billingCycleDays;
+    }
+
+    public String getProcurementContact() {
+        return procurementContact;
+    }
+
+    public void setProcurementContact(String procurementContact) {
+        this.procurementContact = procurementContact == null ? null : procurementContact.trim();;
+    }
+
+    public Integer getDeliverydays() {
+        return deliverydays;
+    }
+
+    public void setDeliverydays(Integer deliverydays) {
+        this.deliverydays = deliverydays;
+    }
+
+    public String getInvoiceType() {
+        return invoiceType;
+    }
+
+    public void setInvoiceType(String invoiceType) {
+        this.invoiceType = invoiceType == null ? null : invoiceType.trim();;
+    }
+
+    public String getContractUpload() {
+        return contractUpload;
+    }
+
+    public void setContractUpload(String contractUpload) {
+        this.contractUpload = contractUpload;
+    }
 }

+ 69 - 26
src/main/java/com/jsh/erp/service/SupplierService.java

@@ -414,11 +414,11 @@ public class SupplierService {
         User userInfo = userService.getCurrentUser();
         Workbook workbook = Workbook.getWorkbook(file.getInputStream());
         Sheet src = workbook.getSheet(0);
-        //'名称', '联系人', '手机号码', '联系电话', '电子邮箱', '传真', '期初应付', '纳税人识别号', '税率(%)', '开户行', '账号', '地址', '备注', '排序', '状态'
+        //'名称', '联系人', '手机号码', '联系电话', '电子邮箱', '纳税人识别号', '开具发票情况','税率(%)', '开户行', '账号', '地址', '供应商分级', '结算方式',	'账单周期', '采购对接人', '到货天数', '备注', '排序', '状态'
         List<Supplier> sList = new ArrayList<>();
         for (int i = 2; i < src.getRows(); i++) {
             String supplierName = ExcelUtils.getContent(src, i, 0);
-            String enabled = ExcelUtils.getContent(src, i, 14);
+            String enabled = ExcelUtils.getContent(src, i, 18);
             if(StringUtil.isNotEmpty(supplierName) && StringUtil.isNotEmpty(enabled)) {
                 Supplier s = new Supplier();
                 s.setType(type);
@@ -427,15 +427,19 @@ public class SupplierService {
                 s.setTelephone(ExcelUtils.getContent(src, i, 2));
                 s.setPhoneNum(ExcelUtils.getContent(src, i, 3));
                 s.setEmail(ExcelUtils.getContent(src, i, 4));
-                s.setFax(ExcelUtils.getContent(src, i, 5));
-                s.setBeginNeedPay(parseBigDecimalEx(ExcelUtils.getContent(src, i, 6)));
-                s.setTaxNum(ExcelUtils.getContent(src, i, 7));
-                s.setTaxRate(parseBigDecimalEx(ExcelUtils.getContent(src, i, 8)));
-                s.setBankName(ExcelUtils.getContent(src, i, 9));
-                s.setAccountNumber(ExcelUtils.getContent(src, i, 10));
-                s.setAddress(ExcelUtils.getContent(src, i, 11));
-                s.setDescription(ExcelUtils.getContent(src, i, 12));
-                s.setSort(ExcelUtils.getContent(src, i, 13));
+                s.setTaxNum(ExcelUtils.getContent(src, i, 5));
+                s.setInvoiceType(ExcelUtils.getContent(src, i, 6));
+                s.setTaxRate(parseBigDecimalEx(ExcelUtils.getContent(src, i, 7)));
+                s.setBankName(ExcelUtils.getContent(src, i, 8));
+                s.setAccountNumber(ExcelUtils.getContent(src, i, 9));
+                s.setAddress(ExcelUtils.getContent(src, i, 10));
+                s.setSupplierLevel(ExcelUtils.getContent(src, i, 11));
+                s.setSettlementMethod(ExcelUtils.getContent(src, i, 12));
+                s.setBillingCycleDays(Integer.valueOf(ExcelUtils.getContent(src, i, 13)));
+                s.setProcurementContact(ExcelUtils.getContent(src, i, 14));
+                s.setDeliverydays(Integer.valueOf(ExcelUtils.getContent(src, i, 15)));
+                s.setDescription(ExcelUtils.getContent(src, i, 16));
+                s.setSort(ExcelUtils.getContent(src, i, 17));
                 s.setCreator(userInfo==null?null:userInfo.getId());
                 s.setEnabled("1".equals(enabled));
                 sList.add(s);
@@ -579,14 +583,15 @@ public class SupplierService {
     }
 
     private File exportExcelVendorOrCustomer(List<Supplier> dataList, String type) throws Exception {
-        String beginNeedStr = "";
+        /*String beginNeedStr = "";
         if("供应商".equals(type)) {
             beginNeedStr = "期初应付";
         } else if("客户".equals(type)) {
             beginNeedStr = "期初应收";
-        }
-        String[] names = {"名称*", "联系人", "手机号码", "联系电话", "电子邮箱", "传真", beginNeedStr,
-                "纳税人识别号", "税率(%)", "开户行", "账号", "地址", "备注", "排序", "状态*"};
+        }*/
+        String[] names = {"名称*", "联系人", "手机号码", "联系电话", "电子邮箱",
+                "纳税人识别号", "发票类型","税率(%)", "开户行", "账号", "地址","供应商分级",
+                "结算方式", "账单周期", "采购对接人", "到货天数", "备注", "排序", "状态*"};
         String title = "信息内容";
         List<String[]> objects = new ArrayList<String[]>();
         if (null != dataList) {
@@ -597,26 +602,64 @@ public class SupplierService {
                 objs[2] = s.getTelephone();
                 objs[3] = s.getPhoneNum();
                 objs[4] = s.getEmail();
-                objs[5] = s.getFax();
-                if(("客户").equals(s.getType())) {
+                /*if(("客户").equals(s.getType())) {
                     objs[6] = s.getBeginNeedGet() == null? "" : s.getBeginNeedGet().setScale(2,BigDecimal.ROUND_HALF_UP).toString();
                 } else if(("供应商").equals(s.getType())) {
                     objs[6] = s.getBeginNeedPay() == null? "" : s.getBeginNeedPay().setScale(2,BigDecimal.ROUND_HALF_UP).toString();
-                }
-                objs[7] = s.getTaxNum();
-                objs[8] = s.getTaxRate() == null? "" : s.getTaxRate().setScale(2,BigDecimal.ROUND_HALF_UP).toString();
-                objs[9] = s.getBankName();
-                objs[10] = s.getAccountNumber();
-                objs[11] = s.getAddress();
-                objs[12] = s.getDescription();
-                objs[13] = s.getSort();
-                objs[14] = s.getEnabled() ? "1" : "0";
+                }*/
+                objs[5] = s.getTaxNum();
+                // 发票类型
+                objs[6] = mapInvoiceType(s.getInvoiceType());
+                // 税率
+                objs[7] = s.getTaxRate() == null? "" : s.getTaxRate().setScale(2,BigDecimal.ROUND_HALF_UP).toString();
+
+                // 银行信息
+                objs[8] = s.getBankName();
+                objs[9] = s.getAccountNumber();
+                objs[10] = s.getAddress();
+
+                // 供应商分级
+                objs[11] = s.getSupplierLevel();
+
+                // 结算方式
+                objs[12] = mapSettlementMethod(s.getSettlementMethod());
+                // 账单周期
+                objs[13] = s.getBillingCycleDays() == null? "" : s.getBillingCycleDays().toString();
+                // 采购对接人
+                objs[14] = s.getProcurementContact();
+                // 到货天数
+                objs[15] = s.getDeliverydays() == null? "" : s.getDeliverydays().toString();
+                objs[16] = s.getDescription();
+                objs[17] = s.getSort();
+                objs[18] = s.getEnabled() ? "1" : "0";
                 objects.add(objs);
             }
         }
         return ExcelUtils.exportObjectsOneSheet(title, "*导入时本行内容请勿删除,切记!", names, title, objects);
     }
 
+    private String mapInvoiceType(String invoiceType) {
+        if ("0".equals(invoiceType)) {
+            return "普通发票";
+        } else if ("1".equals(invoiceType)) {
+            return "增值税专用发票";
+        }
+        return "";
+    }
+
+    private String mapSettlementMethod(String settlementMethod) {
+        if ("0".equals(settlementMethod)) {
+            return "周结";
+        } else if ("1".equals(settlementMethod)) {
+            return "现结/按单";
+        } else if ("2".equals(settlementMethod)) {
+            return "预付款";
+        } else if ("3".equals(settlementMethod)) {
+            return "月结";
+        }
+        return "";
+    }
+
     /**
      * 新增客户时给当前用户自动授权
      * @param request

+ 0 - 1
src/main/resources/application.yml

@@ -6,7 +6,6 @@ mybatis-plus:
 #租户对应的角色id
 manage:
   roleId: 10
-
 tenant:
   userNumLimit: 1000000 #租户允许创建的用户数
   tryDayLimit: 3000 #租户允许试用的天数

+ 127 - 21
src/main/resources/mapper_xml/SupplierMapper.xml

@@ -27,6 +27,13 @@
     <result column="creator" jdbcType="BIGINT" property="creator" />
     <result column="tenant_id" jdbcType="BIGINT" property="tenantId" />
     <result column="delete_flag" jdbcType="VARCHAR" property="deleteFlag" />
+    <result column="supplier_level" jdbcType="VARCHAR" property="supplierLevel" />
+    <result column="settlement_method" jdbcType="VARCHAR" property="settlementMethod" />
+    <result column="billing_cycle_days" jdbcType="INTEGER" property="billingCycleDays" />
+    <result column="procurement_contact" jdbcType="VARCHAR" property="procurementContact" />
+    <result column="delivery_days" jdbcType="INTEGER" property="deliverydays" />
+    <result column="invoice_type" jdbcType="VARCHAR" property="invoiceType" />
+    <result column="contract_upload" jdbcType="VARCHAR" property="contractUpload" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -89,7 +96,9 @@
   <sql id="Base_Column_List">
     id, supplier, contacts, phone_num, email, description, isystem, type, enabled, advance_in, 
     begin_need_get, begin_need_pay, all_need_get, all_need_pay, fax, telephone, address, 
-    tax_num, bank_name, account_number, tax_rate, sort, creator, tenant_id, delete_flag
+    tax_num, bank_name, account_number, tax_rate, sort, creator, tenant_id, delete_flag,
+    supplier_level, settlement_method, billing_cycle_days, procurement_contact, delivery_days,
+    invoice_type, contract_upload
   </sql>
   <select id="selectByExample" parameterType="com.jsh.erp.datasource.entities.SupplierExample" resultMap="BaseResultMap">
     select
@@ -122,24 +131,23 @@
     </if>
   </delete>
   <insert id="insert" parameterType="com.jsh.erp.datasource.entities.Supplier">
-    insert into jsh_supplier (id, supplier, contacts, 
-      phone_num, email, description, 
-      isystem, type, enabled, 
-      advance_in, begin_need_get, begin_need_pay, 
-      all_need_get, all_need_pay, fax, 
-      telephone, address, tax_num, 
-      bank_name, account_number, tax_rate, 
-      sort, creator, tenant_id, 
-      delete_flag)
-    values (#{id,jdbcType=BIGINT}, #{supplier,jdbcType=VARCHAR}, #{contacts,jdbcType=VARCHAR}, 
-      #{phoneNum,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, 
-      #{isystem,jdbcType=TINYINT}, #{type,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, 
-      #{advanceIn,jdbcType=DECIMAL}, #{beginNeedGet,jdbcType=DECIMAL}, #{beginNeedPay,jdbcType=DECIMAL}, 
-      #{allNeedGet,jdbcType=DECIMAL}, #{allNeedPay,jdbcType=DECIMAL}, #{fax,jdbcType=VARCHAR}, 
-      #{telephone,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, #{taxNum,jdbcType=VARCHAR}, 
-      #{bankName,jdbcType=VARCHAR}, #{accountNumber,jdbcType=VARCHAR}, #{taxRate,jdbcType=DECIMAL}, 
-      #{sort,jdbcType=VARCHAR}, #{creator,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, 
-      #{deleteFlag,jdbcType=VARCHAR})
+    insert into jsh_supplier (id, supplier, contacts, phone_num, email, description, isystem, type,
+                              enabled, advance_in, begin_need_get, begin_need_pay, all_need_get,
+                              all_need_pay, fax, telephone, address, tax_num, bank_name, account_number,
+                              tax_rate, sort, creator, tenant_id, delete_flag, supplier_level,
+                              settlement_method, billing_cycle_days, procurement_contact, delivery_days,
+                              invoice_type, contract_upload)
+    values (#{id,jdbcType=BIGINT}, #{supplier,jdbcType=VARCHAR}, #{contacts,jdbcType=VARCHAR},
+            #{phoneNum,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR},
+            #{isystem,jdbcType=TINYINT}, #{type,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT},
+            #{advanceIn,jdbcType=DECIMAL}, #{beginNeedGet,jdbcType=DECIMAL}, #{beginNeedPay,jdbcType=DECIMAL},
+            #{allNeedGet,jdbcType=DECIMAL}, #{allNeedPay,jdbcType=DECIMAL}, #{fax,jdbcType=VARCHAR},
+            #{telephone,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, #{taxNum,jdbcType=VARCHAR},
+            #{bankName,jdbcType=VARCHAR}, #{accountNumber,jdbcType=VARCHAR}, #{taxRate,jdbcType=DECIMAL},
+            #{sort,jdbcType=VARCHAR}, #{creator,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT},
+            #{deleteFlag,jdbcType=VARCHAR}, #{supplierLevel,jdbcType=VARCHAR}, #{settlementMethod,jdbcType=VARCHAR},
+            #{billingCycleDays,jdbcType=INTEGER}, #{procurementContact,jdbcType=VARCHAR}, #{deliverydays,jdbcType=INTEGER},
+            #{invoiceType,jdbcType=VARCHAR}, #{contractUpload,jdbcType=VARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.jsh.erp.datasource.entities.Supplier">
     insert into jsh_supplier
@@ -219,6 +227,27 @@
       <if test="deleteFlag != null">
         delete_flag,
       </if>
+      <if test="supplierLevel != null">
+        supplier_level,
+      </if>
+      <if test="settlementMethod != null">
+        settlement_method,
+      </if>
+      <if test="billingCycleDays != null">
+        billing_cycle_days,
+      </if>
+      <if test="procurementContact != null">
+        procurement_contact,
+      </if>
+      <if test="deliverydays != null">
+        delivery_days,
+      </if>
+      <if test="invoiceType != null">
+        invoice_type,
+      </if>
+      <if test="contractUpload != null">
+        contract_upload,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -296,6 +325,27 @@
       <if test="deleteFlag != null">
         #{deleteFlag,jdbcType=VARCHAR},
       </if>
+      <if test="supplierLevel != null">
+        #{supplierLevel,jdbcType=VARCHAR},
+      </if>
+      <if test="settlementMethod != null">
+        #{settlementMethod,jdbcType=VARCHAR},
+      </if>
+      <if test="billingCycleDays != null">
+        #{billingCycleDays,jdbcType=INTEGER},
+      </if>
+      <if test="procurementContact != null">
+        #{procurementContact,jdbcType=VARCHAR},
+      </if>
+      <if test="deliverydays != null">
+        #{deliverydays,jdbcType=INTEGER},
+      </if>
+      <if test="invoiceType != null">
+        #{invoiceType,jdbcType=VARCHAR},
+      </if>
+      <if test="contractUpload != null">
+        #{contractUpload,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.jsh.erp.datasource.entities.SupplierExample" resultType="java.lang.Long">
@@ -382,6 +432,27 @@
       <if test="record.deleteFlag != null">
         delete_flag = #{record.deleteFlag,jdbcType=VARCHAR},
       </if>
+      <if test="record.supplierLevel != null">
+        supplier_level = #{record.supplierLevel,jdbcType=VARCHAR},
+      </if>
+      <if test="record.settlementMethod != null">
+        settlement_method = #{record.settlementMethod,jdbcType=VARCHAR},
+      </if>
+      <if test="record.billingCycleDays != null">
+        billing_cycle_days = #{record.billingCycleDays,jdbcType=INTEGER},
+      </if>
+      <if test="record.procurementContact != null">
+        procurement_contact = #{record.procurementContact,jdbcType=VARCHAR},
+      </if>
+      <if test="record.deliverydays != null">
+        delivery_days = #{record.deliverydays,jdbcType=INTEGER},
+      </if>
+      <if test="record.invoiceType != null">
+        invoice_type = #{record.invoiceType,jdbcType=VARCHAR},
+      </if>
+      <if test="record.contractUpload != null">
+        contract_upload = #{record.contractUpload,jdbcType=VARCHAR},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -413,7 +484,14 @@
       sort = #{record.sort,jdbcType=VARCHAR},
       creator = #{record.creator,jdbcType=BIGINT},
       tenant_id = #{record.tenantId,jdbcType=BIGINT},
-      delete_flag = #{record.deleteFlag,jdbcType=VARCHAR}
+      delete_flag = #{record.deleteFlag,jdbcType=VARCHAR},
+      supplier_level = #{record.supplierLevel,jdbcType=VARCHAR},
+      settlement_method = #{record.settlementMethod,jdbcType=VARCHAR},
+      billing_cycle_days = #{record.billingCycleDays,jdbcType=INTEGER},
+      procurement_contact = #{record.procurementContact,jdbcType=VARCHAR},
+      delivery_days = #{record.deliverydays,jdbcType=INTEGER},
+      invoice_type = #{record.invoiceType,jdbcType=VARCHAR},
+      contract_upload = #{record.contractUpload,jdbcType=VARCHAR}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -493,6 +571,27 @@
       <if test="deleteFlag != null">
         delete_flag = #{deleteFlag,jdbcType=VARCHAR},
       </if>
+      <if test="supplierLevel != null">
+        supplier_level = #{supplierLevel,jdbcType=VARCHAR},
+      </if>
+      <if test="settlementMethod != null">
+        settlement_method = #{settlementMethod,jdbcType=VARCHAR},
+      </if>
+      <if test="billingCycleDays != null">
+        billing_cycle_days = #{billingCycleDays,jdbcType=INTEGER},
+      </if>
+      <if test="procurementContact != null">
+        procurement_contact = #{procurementContact,jdbcType=VARCHAR},
+      </if>
+      <if test="deliverydays != null">
+        delivery_days = #{deliverydays,jdbcType=INTEGER},
+      </if>
+      <if test="invoiceType != null">
+        invoice_type = #{invoiceType,jdbcType=VARCHAR},
+      </if>
+      <if test="contractUpload != null">
+        contract_upload = #{contractUpload,jdbcType=VARCHAR},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -521,7 +620,14 @@
       sort = #{sort,jdbcType=VARCHAR},
       creator = #{creator,jdbcType=BIGINT},
       tenant_id = #{tenantId,jdbcType=BIGINT},
-      delete_flag = #{deleteFlag,jdbcType=VARCHAR}
+      delete_flag = #{deleteFlag,jdbcType=VARCHAR},
+      supplier_level = #{supplierLevel,jdbcType=VARCHAR},
+      settlement_method = #{settlementMethod,jdbcType=VARCHAR},
+      billing_cycle_days = #{billingCycleDays,jdbcType=INTEGER},
+      procurement_contact = #{procurementContact,jdbcType=VARCHAR},
+      delivery_days = #{deliverydays,jdbcType=INTEGER},
+      invoice_type = #{invoiceType,jdbcType=VARCHAR},
+      contract_upload = #{contractUpload,jdbcType=VARCHAR}
     where id = #{id,jdbcType=BIGINT}
   </update>
 </mapper>