Browse Source

Merge remote-tracking branch 'origin/xq'

# Conflicts:
#	jshERP-web/vue.config.js
13660505945 1 week ago
parent
commit
af831d09ec

+ 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: {},
-  },
-}

+ 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
-}

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

@@ -145,10 +145,14 @@ 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: 'sort', width: 60, align: 'left' },
+        { title: '供应商分级', dataIndex: 'supplierLevel', width: 100, align: 'left' },
+        { title: '结算方式', dataIndex: 'settlementMethod', width: 80, align: 'left' },
+        { 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' },
         {
           title: '状态',
           dataIndex: 'enabled',

+ 99 - 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,38 @@ export default {
           ],
         },
       },
+      settleOptions: [
+        {
+          value: '0',
+          label: '周结',
+        },
+        {
+          value: '1',
+          label: '现结/按单',
+        },
+        {
+          value: '2',
+          label: '预付款',
+        },
+        {
+          value: '3',
+          label: '月结',
+        },
+      ],
+      invoiceOptions: [
+        {
+          value: '0',
+          label: '不开具发票',
+        },
+        {
+          value: '1',
+          label: '开具增值税专用发票',
+        },
+        {
+          value: '2',
+          label: '开具增值税普通发票',
+        },
+      ],
     }
   },
   created() {},
@@ -167,7 +247,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://192.168.2.116:9080', // 请求本地 需要jshERP-boot后台项目
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: '',