qymljy 2 лет назад
Родитель
Сommit
1d5f04d0af

+ 2 - 2
node_modules/.vite/deps/@ant-design_icons-vue.js

@@ -57,10 +57,10 @@ import {
   svgBaseProps,
   useInsertStyles,
   warning
-} from "./chunk-BOZTDRRV.js";
+} from "./chunk-5XDXAD5U.js";
 import {
   createVNode
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import "./chunk-4EOJPDL2.js";
 
 // node_modules/@ant-design/icons-svg/es/asn/AccountBookFilled.js

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
node_modules/.vite/deps/@ant-design_icons-vue.js.map


+ 28 - 28
node_modules/.vite/deps/_metadata.json

@@ -1,104 +1,104 @@
 {
-  "hash": "4374df86",
-  "browserHash": "ec4c1811",
+  "hash": "18bbf35d",
+  "browserHash": "174209d7",
   "optimized": {
     "@ant-design/icons-vue": {
       "src": "../../@ant-design/icons-vue/es/index.js",
       "file": "@ant-design_icons-vue.js",
-      "fileHash": "f1f31ea5",
+      "fileHash": "5938cea3",
       "needsInterop": false
     },
     "ant-design-vue": {
       "src": "../../ant-design-vue/es/index.js",
       "file": "ant-design-vue.js",
-      "fileHash": "e958e50c",
+      "fileHash": "45f9b0ec",
       "needsInterop": false
     },
     "ant-design-vue/es/locale/zh_CN": {
       "src": "../../ant-design-vue/es/locale/zh_CN.js",
       "file": "ant-design-vue_es_locale_zh_CN.js",
-      "fileHash": "c30f749f",
+      "fileHash": "298e1579",
       "needsInterop": false
     },
     "axios": {
       "src": "../../axios/index.js",
       "file": "axios.js",
-      "fileHash": "3abc17ec",
+      "fileHash": "eb7df329",
       "needsInterop": false
     },
     "dayjs": {
       "src": "../../dayjs/dayjs.min.js",
       "file": "dayjs.js",
-      "fileHash": "b2b743af",
+      "fileHash": "e0c0caf7",
       "needsInterop": true
     },
     "dayjs/locale/zh-cn": {
       "src": "../../dayjs/locale/zh-cn.js",
       "file": "dayjs_locale_zh-cn.js",
-      "fileHash": "5cd59bb2",
+      "fileHash": "f34e927d",
       "needsInterop": true
     },
     "js-md5": {
       "src": "../../js-md5/src/md5.js",
       "file": "js-md5.js",
-      "fileHash": "bd43d209",
+      "fileHash": "9d8e97a5",
       "needsInterop": true
     },
     "less": {
       "src": "../../less/dist/less.js",
       "file": "less.js",
-      "fileHash": "966ee37d",
+      "fileHash": "9b1ce05e",
       "needsInterop": true
     },
     "mathjs": {
       "src": "../../mathjs/lib/esm/index.js",
       "file": "mathjs.js",
-      "fileHash": "156f6ef5",
+      "fileHash": "2c610573",
       "needsInterop": false
     },
     "pinia": {
       "src": "../../pinia/dist/pinia.mjs",
       "file": "pinia.js",
-      "fileHash": "0eb43ba2",
+      "fileHash": "fce44de8",
       "needsInterop": false
     },
     "pinia-plugin-persist": {
       "src": "../../pinia-plugin-persist/dist/pinia-persist.es.js",
       "file": "pinia-plugin-persist.js",
-      "fileHash": "6a023e4e",
+      "fileHash": "02794d5a",
       "needsInterop": false
     },
     "vue": {
       "src": "../../vue/dist/vue.runtime.esm-bundler.js",
       "file": "vue.js",
-      "fileHash": "41933eaa",
+      "fileHash": "7ad6386c",
       "needsInterop": false
     },
     "vue-router": {
       "src": "../../vue-router/dist/vue-router.mjs",
       "file": "vue-router.js",
-      "fileHash": "346bff36",
+      "fileHash": "fe58ddc8",
       "needsInterop": false
     }
   },
   "chunks": {
-    "chunk-5OBJFL24": {
-      "file": "chunk-5OBJFL24.js"
+    "chunk-TQOCY6B2": {
+      "file": "chunk-TQOCY6B2.js"
     },
-    "chunk-KBUAZBQ3": {
-      "file": "chunk-KBUAZBQ3.js"
+    "chunk-VCGGRANA": {
+      "file": "chunk-VCGGRANA.js"
     },
-    "chunk-BOZTDRRV": {
-      "file": "chunk-BOZTDRRV.js"
+    "chunk-5XDXAD5U": {
+      "file": "chunk-5XDXAD5U.js"
     },
-    "chunk-3NMN3MUW": {
-      "file": "chunk-3NMN3MUW.js"
+    "chunk-IDMHQ7FM": {
+      "file": "chunk-IDMHQ7FM.js"
     },
-    "chunk-BCNMYODF": {
-      "file": "chunk-BCNMYODF.js"
+    "chunk-UVFXKAFZ": {
+      "file": "chunk-UVFXKAFZ.js"
     },
-    "chunk-WNF2IDJY": {
-      "file": "chunk-WNF2IDJY.js"
+    "chunk-WT3GSKHH": {
+      "file": "chunk-WT3GSKHH.js"
     },
     "chunk-XMOLR7NX": {
       "file": "chunk-XMOLR7NX.js"
@@ -107,4 +107,4 @@
       "file": "chunk-4EOJPDL2.js"
     }
   }
-}
+}

+ 5 - 5
node_modules/.vite/deps/ant-design-vue.js

@@ -1,6 +1,6 @@
 import {
   _extends
-} from "./chunk-KBUAZBQ3.js";
+} from "./chunk-VCGGRANA.js";
 import {
   ArrowLeftOutlined_default,
   ArrowRightOutlined_default,
@@ -57,7 +57,7 @@ import {
   ZoomOutOutlined_default,
   generate,
   presetPrimaryColors
-} from "./chunk-BOZTDRRV.js";
+} from "./chunk-5XDXAD5U.js";
 import {
   Comment,
   Fragment,
@@ -104,16 +104,16 @@ import {
   watchEffect,
   withDirectives,
   withModifiers
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import {
   _objectSpread2,
   zh_CN_default
-} from "./chunk-BCNMYODF.js";
+} from "./chunk-UVFXKAFZ.js";
 import {
   _defineProperty,
   _toPropertyKey,
   _typeof
-} from "./chunk-WNF2IDJY.js";
+} from "./chunk-WT3GSKHH.js";
 import {
   require_dayjs_min
 } from "./chunk-XMOLR7NX.js";

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
node_modules/.vite/deps/ant-design-vue.js.map


+ 2 - 2
node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js

@@ -1,8 +1,8 @@
 import {
   _objectSpread2,
   zh_CN_default
-} from "./chunk-BCNMYODF.js";
-import "./chunk-WNF2IDJY.js";
+} from "./chunk-UVFXKAFZ.js";
+import "./chunk-WT3GSKHH.js";
 import "./chunk-4EOJPDL2.js";
 
 // node_modules/ant-design-vue/es/vc-picker/locale/zh_CN.js

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
node_modules/.vite/deps/ant-design-vue_es_locale_zh_CN.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
node_modules/.vite/deps/axios.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
node_modules/.vite/deps/js-md5.js.map


+ 2 - 2
node_modules/.vite/deps/mathjs.js

@@ -1,9 +1,9 @@
 import {
   _extends
-} from "./chunk-KBUAZBQ3.js";
+} from "./chunk-VCGGRANA.js";
 import {
   _defineProperty
-} from "./chunk-WNF2IDJY.js";
+} from "./chunk-WT3GSKHH.js";
 import {
   __commonJS,
   __export,

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
node_modules/.vite/deps/mathjs.js.map


+ 1 - 1
node_modules/.vite/deps/pinia-plugin-persist.js.map

@@ -1,7 +1,7 @@
 {
   "version": 3,
   "sources": ["../../pinia-plugin-persist/dist/pinia-persist.es.js"],
-  "sourcesContent": ["const updateStorage = (strategy, store) => {\n  const storage = strategy.storage || sessionStorage;\n  const storeKey = strategy.key || store.$id;\n  if (strategy.paths) {\n    const partialState = strategy.paths.reduce((finalObj, key) => {\n      finalObj[key] = store.$state[key];\n      return finalObj;\n    }, {});\n    storage.setItem(storeKey, JSON.stringify(partialState));\n  } else {\n    storage.setItem(storeKey, JSON.stringify(store.$state));\n  }\n};\nvar index = ({ options, store }) => {\n  var _a, _b, _c, _d;\n  if ((_a = options.persist) == null ? void 0 : _a.enabled) {\n    const defaultStrat = [{\n      key: store.$id,\n      storage: sessionStorage\n    }];\n    const strategies = ((_c = (_b = options.persist) == null ? void 0 : _b.strategies) == null ? void 0 : _c.length) ? (_d = options.persist) == null ? void 0 : _d.strategies : defaultStrat;\n    strategies.forEach((strategy) => {\n      const storage = strategy.storage || sessionStorage;\n      const storeKey = strategy.key || store.$id;\n      const storageResult = storage.getItem(storeKey);\n      if (storageResult) {\n        store.$patch(JSON.parse(storageResult));\n        updateStorage(strategy, store);\n      }\n    });\n    store.$subscribe(() => {\n      strategies.forEach((strategy) => {\n        updateStorage(strategy, store);\n      });\n    });\n  }\n};\nexport { index as default, updateStorage };\n"],
+  "sourcesContent": ["const updateStorage = (strategy, store) => {\r\n  const storage = strategy.storage || sessionStorage;\r\n  const storeKey = strategy.key || store.$id;\r\n  if (strategy.paths) {\r\n    const partialState = strategy.paths.reduce((finalObj, key) => {\r\n      finalObj[key] = store.$state[key];\r\n      return finalObj;\r\n    }, {});\r\n    storage.setItem(storeKey, JSON.stringify(partialState));\r\n  } else {\r\n    storage.setItem(storeKey, JSON.stringify(store.$state));\r\n  }\r\n};\r\nvar index = ({ options, store }) => {\r\n  var _a, _b, _c, _d;\r\n  if ((_a = options.persist) == null ? void 0 : _a.enabled) {\r\n    const defaultStrat = [{\r\n      key: store.$id,\r\n      storage: sessionStorage\r\n    }];\r\n    const strategies = ((_c = (_b = options.persist) == null ? void 0 : _b.strategies) == null ? void 0 : _c.length) ? (_d = options.persist) == null ? void 0 : _d.strategies : defaultStrat;\r\n    strategies.forEach((strategy) => {\r\n      const storage = strategy.storage || sessionStorage;\r\n      const storeKey = strategy.key || store.$id;\r\n      const storageResult = storage.getItem(storeKey);\r\n      if (storageResult) {\r\n        store.$patch(JSON.parse(storageResult));\r\n        updateStorage(strategy, store);\r\n      }\r\n    });\r\n    store.$subscribe(() => {\r\n      strategies.forEach((strategy) => {\r\n        updateStorage(strategy, store);\r\n      });\r\n    });\r\n  }\r\n};\r\nexport { index as default, updateStorage };\r\n"],
   "mappings": ";;;AAAA,IAAM,gBAAgB,CAAC,UAAU,UAAU;AACzC,QAAM,UAAU,SAAS,WAAW;AACpC,QAAM,WAAW,SAAS,OAAO,MAAM;AACvC,MAAI,SAAS,OAAO;AAClB,UAAM,eAAe,SAAS,MAAM,OAAO,CAAC,UAAU,QAAQ;AAC5D,eAAS,GAAG,IAAI,MAAM,OAAO,GAAG;AAChC,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AACL,YAAQ,QAAQ,UAAU,KAAK,UAAU,YAAY,CAAC;AAAA,EACxD,OAAO;AACL,YAAQ,QAAQ,UAAU,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,EACxD;AACF;AACA,IAAI,QAAQ,CAAC,EAAE,SAAS,MAAM,MAAM;AAClC,MAAI,IAAI,IAAI,IAAI;AAChB,OAAK,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG,SAAS;AACxD,UAAM,eAAe,CAAC;AAAA,MACpB,KAAK,MAAM;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AACD,UAAM,eAAe,MAAM,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG,eAAe,OAAO,SAAS,GAAG,WAAW,KAAK,QAAQ,YAAY,OAAO,SAAS,GAAG,aAAa;AAC7K,eAAW,QAAQ,CAAC,aAAa;AAC/B,YAAM,UAAU,SAAS,WAAW;AACpC,YAAM,WAAW,SAAS,OAAO,MAAM;AACvC,YAAM,gBAAgB,QAAQ,QAAQ,QAAQ;AAC9C,UAAI,eAAe;AACjB,cAAM,OAAO,KAAK,MAAM,aAAa,CAAC;AACtC,sBAAc,UAAU,KAAK;AAAA,MAC/B;AAAA,IACF,CAAC;AACD,UAAM,WAAW,MAAM;AACrB,iBAAW,QAAQ,CAAC,aAAa;AAC/B,sBAAc,UAAU,KAAK;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;",
   "names": []
 }

+ 2 - 2
node_modules/.vite/deps/pinia.js

@@ -1,6 +1,6 @@
 import {
   setupDevtoolsPlugin
-} from "./chunk-5OBJFL24.js";
+} from "./chunk-TQOCY6B2.js";
 import {
   computed,
   effectScope,
@@ -19,7 +19,7 @@ import {
   toRefs,
   unref,
   watch
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import "./chunk-4EOJPDL2.js";
 
 // node_modules/pinia/node_modules/vue-demi/lib/index.mjs

+ 2 - 2
node_modules/.vite/deps/vue-router.js

@@ -1,6 +1,6 @@
 import {
   setupDevtoolsPlugin
-} from "./chunk-5OBJFL24.js";
+} from "./chunk-TQOCY6B2.js";
 import {
   computed,
   defineComponent,
@@ -18,7 +18,7 @@ import {
   unref,
   watch,
   watchEffect
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import "./chunk-4EOJPDL2.js";
 
 // node_modules/vue-router/dist/vue-router.mjs

+ 1 - 1
node_modules/.vite/deps/vue.js

@@ -145,7 +145,7 @@ import {
   withMemo,
   withModifiers,
   withScopeId
-} from "./chunk-3NMN3MUW.js";
+} from "./chunk-IDMHQ7FM.js";
 import "./chunk-4EOJPDL2.js";
 export {
   BaseTransition,

+ 10 - 0
src/router/modelNormal.js

@@ -99,6 +99,16 @@ const moduleNormal = [
     },
     component: () => import(/* webpackChunkName: "about" */ '@/system/moduleNormal/enterpriseArchives/detail/index.vue')
   },
+  {
+    path: '/sitemanager',
+    name: 'sitemanager',
+    meta: {
+      title: '站点管理',
+      name: 'sitemanager',
+      keepAlive:false
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/system/moduleNormal/siteManager/index.vue')
+  },
   {
     path: '/areaManage',
     name: 'areaManage',

+ 9 - 0
src/style.less

@@ -113,3 +113,12 @@ button:focus-visible {
 .inline-block{
   display: inline-block !important;
 }
+.defaultInfo{
+  font-weight: bold;
+  margin-bottom: 10px !important;
+}
+.defaultInfo-sys{
+  font-weight: bold;
+  margin-bottom: 10px !important;
+  margin-top: 10px !important;
+}

+ 44 - 21
src/system/moduleNormal/enterpriseArchives/detail/index.vue

@@ -1,10 +1,20 @@
 <template>
   <div>
-    <detail-template :headData="mainAreaData" :title="enterpriseData.enterprisename" ownertable="sys_enterprise">
+    <detail-template :headData="mainAreaData" :tabs="['详细信息']"  :title="enterpriseData.enterprisename" ownertable="sys_enterprise"
+                     :delParam="{id:'20220920084201',content:{sys_enterpriseids:[router.currentRoute.value.query.id]}}" :disable="utils.isDisabled(enterpriseData.iscooperatesite,['1'])">
       <template #operation>
         <edit-temp :data="enterpriseData" @onSuccess="mianData"></edit-temp>
+
       </template>
       <template #tab0>
+        <div class="defaultInfo">
+          <span >基本信息</span>
+        </div>
+        <defaultInfo :data="basicData"></defaultInfo>
+        <div class="defaultInfo-sys">
+          <span >系统信息</span>
+        </div>
+        <defaultInfo :data="systemData"></defaultInfo>
       </template>
     </detail-template>
   </div>
@@ -12,13 +22,16 @@
 
 <script setup>
 import Api from '@/api/api'
-
+import utils from '@/utils/utils'
 import detailTemplate from '@/components/detailTemplate/index.vue'
 import editTemp from './modules/edit.vue'
+import defaultInfo from '@/template/defaultInfo/index.vue'
 import { useRouter } from "vue-router";
 import { onMounted,ref } from "vue";
 const router = useRouter()
 const mainAreaData = ref([])
+const basicData = ref([])
+const systemData = ref([])
 const param = ref({
   "id": 20221109093902,
   "content": {
@@ -45,17 +58,10 @@ const mianData = async ()=>{
 }
 const changeDataStructure = (data) => {
   mainAreaData.value = [
+
     {
-      label:'企业名称',
-      value: data.enterprisename
-    },
-    {
-      label:'订单可退货天数',
-      value: data.limitreturnday
-    },
-    {
-      label:'是否审核订单可开票',
-      value: data.invoicingpoint == 1 ? '订单审核' : '发货'
+      label:'企业编号',
+      value: data.entcode
     },
     {
       label:'省市县',
@@ -65,6 +71,21 @@ const changeDataStructure = (data) => {
       label:'详细地址',
       value: data.address
     },
+    {
+      label:'客户类型',
+      value: data.type
+    },
+    {
+      label:'是否合作站点',
+      value: data.iscooperatesite == 1 ? '是':'否'
+    },
+
+  ]
+  basicData.value = [
+    {
+      label:'企业名称',
+      value: data.enterprisename
+    },
     {
       label:'企业联系人',
       value: data.contact
@@ -77,21 +98,23 @@ const changeDataStructure = (data) => {
       label:'税号',
       value: data.taxno
     },
+  ]
+  systemData.value = [
     {
-      label:'是否经营授权',
-      value: data.saleclassauth == 1 ? '否' : '是'
+      label:'创建时间',
+      value:data.createdate
     },
     {
-      label:'企业等级',
-      value: data.grade
+      label:'创建人',
+      value:data.createby
     },
     {
-      label:'创建人',
-      value: data.createby
+      label:'最近编辑时间',
+      value:data.changedate
     },
     {
-      label:'创建时间',
-      value: data.createdate
+      label:'最近编辑人',
+      value:data.changeby
     },
   ]
 }
@@ -100,4 +123,4 @@ onMounted (()=>{
 })
 </script>
 <style>
-</style>
+</style>

+ 32 - 2
src/system/moduleNormal/enterpriseArchives/detail/modules/edit.vue

@@ -22,6 +22,16 @@
               </a-input>
             </a-form-item>
           </a-col>
+          <a-col :span="12">
+            <a-form-item label="企业编号" name="entcode">
+              <a-input v-model:value="form.entcode" placeholder="输入企业编号"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="税号" name="taxno">
+              <a-input v-model:value="form.taxno" placeholder="输入税号"></a-input>
+            </a-form-item>
+          </a-col>
           <a-col :span="12">
             <a-form-item label="企业联系人" name="contact">
               <a-input v-model:value="form.contact" placeholder="输入企业联系人"></a-input>
@@ -48,10 +58,24 @@
             </a-form-item>
           </a-col>
         </a-row>
+        <a-row>
+          <a-col :span="24">
+            <a-form-item label="客户类型" name="type" :rules="[{ required: true, message: '请选择客户类型' }]">
+              <a-select
+                  ref="select"
+                  v-model:value="form.type"
+                  placeholder="选择客户类型"
+                  style="width: 100%"
+              >
+                <a-select-option v-for="item in typeOptions" :key="item.index" :value="item.value">{{item.remarks}}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+        </a-row>
       </a-form>
       <template #extra>
         <a-space>
-          <a-button @click="onClose">关闭</a-button>
+          <a-button @click="onClose">取消</a-button>
           <a-button type="primary" @click="submit">保存</a-button>
         </a-space>
       </template>
@@ -70,6 +94,7 @@ const props = defineProps(['data'])
 const emit = defineEmits(['onSuccess'])
 const base = useBaseStore()
 const visible = ref(false)
+const typeOptions = ref([])
 const form = ref({
   sys_enterpriseid:0,
   enterprisename:'',
@@ -79,6 +104,7 @@ const formRef = ref()
 const Provinces = ref([])
 const showDrawer = async ()=>{
   visible.value = true
+  customertype()
   form.value = Object.assign({},form.value,props.data)
   form.value.cascaderValue = [props.data.province,props.data.city,props.data.county]
   Provinces.value = await base.ProvincesData()
@@ -122,6 +148,10 @@ const onSelect = (info)=>{
     cascaderValue:[info.regProvince,info.regCity,info.regArea]
   }
 }
+const customertype = async ()=>{
+  const res = await Api.optionstype('customertypemx')
+  typeOptions.value = res.data
+}
 </script>
 <style>
-</style>
+</style>

+ 25 - 1
src/system/moduleNormal/enterpriseArchives/index.vue

@@ -2,7 +2,15 @@
   <div>
     <listTemp ref="list" :columns="columns" :param="param" keyRouteName="enterprisename"  :tableName="'EnterpriseArchivesTable'" :searchType="searchType" :detailPage="{name:'enterpriseDetail',idname:'sys_enterpriseid'}">
       <template #operation>
-        <add-temp @onSuccess="onSuccess"></add-temp>
+        <add-temp @onSuccess="onSuccess" :typeOptions="typeOptions"></add-temp>
+      </template>
+      <template #tb_cell="{data}">
+        <template v-if="data.column.dataIndex === 'iscooperatesite'">
+          {{data.record.iscooperatesite == 1?'是':'否'}}
+        </template>
+        <template v-if="data.column.dataIndex === 'operation'">
+          <a-button type="link" @click="toDetailPage(data.record)">详 情</a-button>
+        </template>
       </template>
     </listTemp>
   </div>
@@ -11,21 +19,26 @@
 <script setup>
   import listTemp from '@/components/listTemplate/index.vue';
   import addTemp from './modules/add.vue';
+  import Api from '@/api/api'
   import { ref } from 'vue'
   import { useRouter } from "vue-router";
   import { onMounted } from "vue";
   const router = useRouter()
   let columns = ref([])
   let dataSource = ref([])
+  const typeOptions = ref([])
   let searchType = ref([
     {label:'搜索',key:'condition',type:'input'},
+    {label: '客户类型',key: 'type',type: 'select',dataSource:typeOptions}
   ])
   let param = ref({
     "content": {
+      "nocache":true,
       "pageNumber": 1,
       "pageSize": 20,
       "where": {
         "condition": "",
+        "type":''
       }
     },
     "id": 20220920083901,
@@ -34,6 +47,17 @@
   const onSuccess = ()=>{
     list.value.tableData()
   }
+  const customertype = async ()=>{
+    const res = await Api.optionstype('customertypemx')
+    typeOptions.value = res.data
+  }
+  const toDetailPage = (record)=>{
+    // 跳转到详情
+    router.push({name:'enterpriseDetail',query:{id:record.sys_enterpriseid}})
+  }
+  onMounted(()=>{
+    customertype()
+  })
 </script>
 <style>
 </style>

+ 41 - 6
src/system/moduleNormal/enterpriseArchives/modules/add.vue

@@ -22,6 +22,16 @@
               </a-input>
             </a-form-item>
           </a-col>
+          <a-col :span="12">
+            <a-form-item label="企业编号" name="entcode" :rules="[{ required: true, message: '请输入企业编号' }]">
+              <a-input v-model:value="form.entcode" placeholder="输入企业编号"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="税号" name="taxno">
+              <a-input v-model:value="form.taxno" placeholder="输入税号"></a-input>
+            </a-form-item>
+          </a-col>
           <a-col :span="12">
             <a-form-item label="企业联系人" name="contact">
               <a-input v-model:value="form.contact" placeholder="输入企业联系人"></a-input>
@@ -40,7 +50,7 @@
         </a-row>
         <a-row>
           <a-col :span="24">
-            <a-form-item label="详细地址" name="address">
+            <a-form-item label="地址" name="address">
               <a-input
                 v-model:value="form.address"
                 placeholder="输入详细地址"
@@ -48,10 +58,24 @@
             </a-form-item>
           </a-col>
         </a-row>
+        <a-row>
+          <a-col :span="24">
+            <a-form-item label="客户类型" name="type" :rules="[{ required: true, message: '请选择客户类型' }]">
+              <a-select
+                  ref="select"
+                  v-model:value="form.type"
+                  placeholder="选择客户类型"
+                  style="width: 100%"
+              >
+                <a-select-option v-for="item in typeOptions" :key="item.index" :value="item.value">{{item.remarks}}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+        </a-row>
       </a-form>
       <template #extra>
         <a-space>
-          <a-button @click="onClose">关闭</a-button>
+          <a-button @click="onClose">取消</a-button>
           <a-button type="primary" @click="submit">保存</a-button>
         </a-space>
       </template>
@@ -60,7 +84,7 @@
 </template>
 
 <script setup>
-import {ref,defineEmits} from 'vue'
+import {ref, defineEmits, defineProps} from 'vue'
 import Api from '@/api/api'
 import utils from '@/utils/utils'
 import { storeToRefs } from 'pinia'
@@ -69,15 +93,22 @@ import businessInfo from '@/template/businessInfo/index.vue'
 const emit = defineEmits(['onSuccess'])
 const base = useBaseStore()
 const visible = ref(false)
+const props = defineProps(['typeOptions'])
 const form = ref({
-  sys_enterpriseid:0,
+  /*sys_enterpriseid:0,*/
+  sa_customersid:0,
   enterprisename:'',
+  type:'',
   cascaderValue:null
 })
 const formRef = ref()
 const Provinces = ref([])
+const typeOptions = ref([])
 const showDrawer = async ()=>{
   visible.value = true
+  console.log(props.typeOptions,'type')
+  typeOptions.value = props.typeOptions
+  form.value.type = typeOptions.value[0]
   Provinces.value = await base.ProvincesData()
 }
 const onClose = () => {
@@ -85,6 +116,7 @@ const onClose = () => {
   formRef.value.resetFields();
 };
 const submit = async ()=>{
+  console.log(form.value,'form表单')
   try {
     const values = await formRef.value.validateFields();
     const res = await Api.requested({
@@ -108,6 +140,7 @@ const onChange = ()=>{
   })
 }
 const onSelect = (info)=>{
+  console.log(info,'工商查询')
   form.value = {
     enterprisename:info.companyName,
     contact:info.legalPerson,
@@ -116,9 +149,11 @@ const onSelect = (info)=>{
     city:info.regCity,
     county:info.regArea,
     address:info.address,
-    cascaderValue:[info.regProvince,info.regCity,info.regArea]
+    cascaderValue:[info.regProvince,info.regCity,info.regArea],
+    taxno:info.taxNum,
+    sa_customersid:0,
   }
 }
 </script>
 <style>
-</style>
+</style>

+ 35 - 0
src/system/moduleNormal/siteManager/index.vue

@@ -0,0 +1,35 @@
+<template>
+  <div>
+    <listTemp ref="list" :param="param" :tableName="'siteManagerTable'" >
+      <template #operation>
+        <add @onSuccess="onSuccess"></add>
+      </template>
+      <template #tb_cell="{data}">
+        <template v-if="data.column.dataIndex === 'operation'">
+          <edit :data="data.record" @onSuccess="onSuccess"></edit>
+        </template>
+      </template>
+    </listTemp>
+  </div>
+</template>
+
+<script setup>
+  import listTemp from '@/components/listTemplate/index.vue';
+  import add from './modules/add.vue'
+  import edit from './modules/edit.vue'
+  import {ref} from "vue";
+  const list = ref()
+  const param = ref({
+    "id":20230613154903,
+    "content": {
+      "nocache":true,
+    }
+  })
+  const onSuccess = ()=>{
+    list.value.tableData()
+  }
+</script>
+
+<style>
+
+</style>

+ 103 - 0
src/system/moduleNormal/siteManager/modules/add.vue

@@ -0,0 +1,103 @@
+<template>
+  <div>
+    <a-button type="primary" @click="showDrawer">新增站点</a-button>
+    <a-drawer
+        v-model:visible="visible"
+        class="custom-class"
+        title="新增站点"
+        placement="right"
+        width="600"
+        :closable="false"
+        @close="onClose"
+    >
+      <a-form :model="form" :rules="rules" ref="formRef"  size="small" layout="vertical">
+        <a-row :gutter="16">
+          <a-col :span="24">
+            <a-form-item label="站点ID" name="siteid" :rules="[{ required: true, message: '请输入站点ID' }]">
+              <a-input v-model:value="form.siteid"  placeholder="请输入站点ID" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="站点名称" name="sitename" :rules="[{ required: true, message: '请输入站点名称' }]">
+              <a-input v-model:value="form.sitename"  placeholder="请输入站点名称" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="企业" name="enterprisename" :rules="[{ required: true, message: '请选择企业' }]">
+              <a-input v-model:value="form.enterprisename" readonly  placeholder="请选择企业" >
+                <template #addonAfter>
+                  <selectEnterprise :param="param" @onSelect="onSelect"></selectEnterprise>
+                </template>
+              </a-input>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+      <template #extra>
+        <a-space>
+          <a-button @click="onClose">关闭</a-button>
+          <a-button type="primary" @click="submit">保存</a-button>
+        </a-space>
+      </template>
+    </a-drawer>
+  </div>
+</template>
+
+<script setup>
+  import {defineEmits, ref} from 'vue'
+  import Api from '@/api/api'
+  import utils from '@/utils/utils'
+  import selectEnterprise from '@/template/selectEnterprise/index.vue'
+  const visible = ref(false)
+  const emit = defineEmits(['onSuccess'])
+  const formRef = ref()
+  const param = ref({
+    "content": {
+      "pageNumber": 1,
+      "pageSize": 20,
+      "where": {
+        "condition": "",
+        "type":'',
+        "issiteenterprise":1
+      }
+    },
+    "id": 20220920083901,
+  })
+  const form = ref({
+    enterprisename:'',
+    siteid:'',
+    magsite:'',
+    sitename:''
+  })
+  const rules = ref([])
+  const showDrawer = ()=>{
+    visible.value = true
+  }
+  const onClose = ()=>{
+    visible.value = false;
+    formRef.value.resetFields();
+  }
+  const submit = async()=>{
+    try {
+      const values = await formRef.value.validateFields()
+      const res = await Api.requested({
+        "id":20230613153303,
+        "content":form.value
+      })
+      utils.message(res,'新增成功',()=>{
+        onClose()
+        emit('onSuccess')
+      })
+    } catch (e){
+      console.log('Failed:', e);
+    }
+  }
+  const onSelect = (data)=>{
+    console.log(data)
+    form.value.enterprisename = data.enterprisename
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 106 - 0
src/system/moduleNormal/siteManager/modules/edit.vue

@@ -0,0 +1,106 @@
+<template>
+  <div>
+    <a-button type="link" @click="showDrawer">编 辑</a-button>
+    <a-drawer
+        v-model:visible="visible"
+        class="custom-class"
+        title="编辑站点"
+        placement="right"
+        width="600"
+        :closable="false"
+        @close="onClose"
+    >
+      <a-form :model="form" :rules="rules" ref="formRef"  size="small" layout="vertical">
+        <a-row :gutter="16">
+          <a-col :span="24">
+            <a-form-item label="站点ID" name="siteid" :rules="[{ required: true, message: '请输入站点ID' }]">
+              <a-input v-model:value="form.siteid" disabled placeholder="请输入站点ID" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="站点名称" name="sitename" :rules="[{ required: true, message: '请输入站点名称' }]">
+              <a-input v-model:value="form.sitename"  placeholder="请输入站点名称" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="企业" name="enterprisename" :rules="[{ required: true, message: '请选择企业' }]">
+              <a-input v-model:value="form.enterprisename" readonly  placeholder="请选择企业" >
+                <template #addonAfter>
+                  <selectEnterprise :param="param" @onSelect="onSelect"></selectEnterprise>
+                </template>
+              </a-input>
+            </a-form-item>
+          </a-col>
+        </a-row>
+      </a-form>
+      <template #extra>
+        <a-space>
+          <a-button @click="onClose">关闭</a-button>
+          <a-button type="primary" @click="submit">保存</a-button>
+        </a-space>
+      </template>
+    </a-drawer>
+  </div>
+</template>
+
+<script setup>
+import {defineEmits, defineProps, ref} from 'vue'
+  import Api from '@/api/api'
+  import utils from '@/utils/utils'
+  import selectEnterprise from '@/template/selectEnterprise/index.vue'
+  const props = defineProps(['data'])
+  const visible = ref(false)
+  const emit = defineEmits(['onSuccess'])
+  const formRef = ref()
+  const param = ref({
+    "content": {
+      "pageNumber": 1,
+      "pageSize": 20,
+      "where": {
+        "condition": "",
+        "type":'',
+        "issiteenterprise":1
+      }
+    },
+    "id": 20220920083901,
+  })
+  const form = ref({
+    enterprisename:'',
+    siteid:'',
+    magsite:'',
+    sitename:''
+  })
+  const rules = ref([])
+  const showDrawer = ()=>{
+    visible.value = true
+    form.value = Object.assign({},form.value,props.data)
+  }
+  const onClose = ()=>{
+    visible.value = false;
+    formRef.value.resetFields();
+  }
+  const submit = async()=>{
+  console.log(form.value)
+    try {
+      const values = await formRef.value.validateFields()
+      const res = await Api.requested({
+        "id":20230608103702,
+        "content":form.value
+      })
+      utils.message(res,'编辑成功',()=>{
+        onClose()
+        emit('onSuccess')
+      })
+    } catch (e){
+      console.log('Failed:', e);
+    }
+  }
+  const onSelect = (data)=>{
+    console.log(data)
+    form.value.enterprisename = data.enterprisename
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 97 - 0
src/template/selectEnterprise/index.vue

@@ -0,0 +1,97 @@
+// 选择企业
+<template>
+  <div>
+    <div @click="showModel">
+      <a-space>
+        <home-outlined/>
+        <slot name="text"></slot>
+      </a-space>
+    </div>
+    <a-modal v-model:visible="visible" title="选择企业" :bodyStyle="{padding:'10px'}" width="900px" :footer="null" :afterClose="handleCancel">
+      <a-input class="search-panel" v-model:value="search" placeholder="搜索内容" @keyup.enter="searchData" allowClear></a-input>
+      <a-table class="ant-table-striped" :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped' : null)" :scroll="{x:'max-content',y:'500px'}" :dataSource="dataSource" :columns="props.columns || columns" size="small" :pagination="{defaultPageSize:20,total:total}" @change="onChange">
+        <template #bodyCell="{ column,record }">
+          <slot name="tb_cell" :data="{column, record}"></slot>
+          <template v-if="column.dataIndex === 'operation'">
+            <a @click="onSelect(column,record)">选 择</a>
+          </template>
+        </template>
+      </a-table>
+    </a-modal>
+  </div>
+</template>
+
+<script setup>
+import {ref,defineProps,defineEmits,defineExpose} from 'vue'
+import { HomeOutlined } from '@ant-design/icons-vue';
+import Api  from '@/api/api'
+const props = defineProps({
+  param: Object,
+  columns:Array
+})
+const emit = defineEmits(['onSelect'])
+const visible = ref(false)
+const search = ref('')
+const total = ref(0)
+const dataSource = ref([])
+const columns = ref([{
+  title: '企业名称',
+  dataIndex: 'enterprisename',
+  key: 'enterprisename',
+  width:250
+},
+{
+  title: '联系人',
+  dataIndex: 'contact',
+  key: 'contact',
+},
+{
+  title: '联系电话',
+  dataIndex: 'phonenumber',
+  key: 'phonenumber',
+},{
+  title: '操作',
+  dataIndex: 'operation',
+  key: 'operation',
+}])
+const showModel = ()=>{
+  visible.value = true
+  tableData()
+}
+
+const onChange = (pagination, filters, sorter, { currentDataSource })=>{
+  props.param.content.pageNumber = pagination.current
+  props.param.content.pageSize = pagination.pageSize
+  tableData()
+}
+
+const tableData = async ()=>{
+  const res = await Api.requested(props.param)
+  dataSource.value = res.data
+  total.value = res.total
+}
+const searchData = ()=>{
+  props.param.content.where.condition = search.value
+  props.param.content.pageNumber = 1
+  tableData()
+}
+const onSelect = (val,record)=>{
+  emit('onSelect',record)
+  visible.value = false
+}
+const handleCancel = () =>{
+  search.value = ''
+}
+defineExpose({
+  visible
+})
+</script>
+<style scoped>
+.search-panel{
+  width: 300px;
+  margin-bottom:10px;
+}
+.ant-table-striped :deep td{
+  font-size: 12px;
+}
+</style>

Некоторые файлы не были показаны из-за большого количества измененных файлов