Newer
Older
xc-business-system / src / views / resource / outsideService / supplier / basic.vue
<!-- 委托方名录 基本信息 -->
<script name="SupplierInfoBasic" lang="ts" setup>
import type { ISupplierInfo } from './supplier-interface'
import type { IDictType } from '@/commonInterface/resource-interface'

const supplierInfo = ref<ISupplierInfo>({
  id: '',
  labCode: '',
  labCodeName: '',
  groupCode: '',
  groupCodeName: '',
  supplierNo: '',
  supplierName: '',
  briefName: '',
  supplierType: '',
  supplierTypeName: '',
  taxNumber: '',
  bankAccount: '',
  bankName: '',
  bankAccountNumber: '',
  director: '',
  phone: '',
  postalCode: '',
  fax: '',
  mailbox: '',
  website: '',
  companyAddress: '',
  supplierContent: '',
  minioFileName: '',
  remark: '',
  approvalStatus: '',
  approvalStatusName: '',
  processId: '',
  taskId: '',
  createUserName: '',
  createTime: '',
})

const fileNameList = ref<string[]>([])

const supplierTypeDict = ref<Array<IDictType>>([])
const labCodeDict = ref<IDictType[]>([])
const groupCodeDict = ref<IDictType[]>([])

// 逻辑
// 查询人员基本信息
const getSupplierBasicInCache = () => {
  supplierInfo.value = JSON.parse(sessionStorage.getItem('supplierInfo')!)

  labCodeDict.value = JSON.parse(sessionStorage.getItem('bizLabCode')!)
  groupCodeDict.value = JSON.parse(sessionStorage.getItem('bizGroupCode')!)
}

const initDialog = (basic: ISupplierInfo) => {
  console.log('basic', basic)

  supplierInfo.value = basic
}

// 监听 显示中文 立即监听
watch(() => supplierInfo.value.supplierType, (newVal) => {
  console.log(supplierInfo.value)
  console.log('supplierInfo.value.supplierType', supplierInfo.value.supplierType)

  if (newVal) {
    if (supplierTypeDict.value.length === 0) {
      supplierTypeDict.value = JSON.parse(sessionStorage.getItem('bizSupplierType')!)
    }
    const targetList = supplierTypeDict.value.filter(item => item.value === newVal)
    if (targetList.length > 0) {
      supplierInfo.value.supplierTypeName = targetList[0].name
    }
    else {
      supplierInfo.value.supplierTypeName = ''
    }
  }
}, { immediate: true })

// 监听 文件列表 立即监听
watch(() => supplierInfo.value.minioFileName, (newVal) => {
  if (newVal && newVal !== '') {
    fileNameList.value = newVal!.split(',')
  }
  else {
    fileNameList.value = []
  }
}, { immediate: true, deep: true })

defineExpose({
  getSupplierBasicInCache,
  initDialog,
})
</script>

<template>
  <app-container>
    <el-form ref="basicFormRef" :model="supplierInfo" label-position="right" label-width="130px" border stripe>
      <el-row :gutter="24">
        <!-- 第一行 第一列 -->
        <el-col :span="6">
          <el-form-item label="实验室">
            <el-input v-model="supplierInfo.labCodeName" :disabled="true" />
          </el-form-item>
          <el-form-item label="供方名称">
            <el-input v-model="supplierInfo.supplierName" :disabled="true" />
          </el-form-item>
          <el-form-item label="税号">
            <el-input v-model="supplierInfo.taxNumber" :disabled="true" />
          </el-form-item>
          <el-form-item label="邮编">
            <el-input v-model="supplierInfo.postalCode" :disabled="true" />
          </el-form-item>
        </el-col>

        <!-- 第一行 第二列 -->
        <el-col :span="6">
          <el-form-item label="部门">
            <el-input v-model="supplierInfo.groupCodeName" :disabled="true" />
          </el-form-item>
          <el-form-item label="供方简称">
            <el-input v-model="supplierInfo.briefName" :disabled="true" />
          </el-form-item>
          <el-form-item label="银行账户名">
            <el-input v-model="supplierInfo.bankAccount" :disabled="true" />
          </el-form-item>
          <el-form-item label="传真">
            <el-input v-model="supplierInfo.fax" :disabled="true" />
          </el-form-item>
        </el-col>

        <!-- 第一行 第三列 -->
        <el-col :span="6">
          <el-form-item label="供方编号">
            <el-input v-model="supplierInfo.supplierNo" :disabled="true" />
          </el-form-item>
          <el-form-item label="联系人">
            <el-input v-model="supplierInfo.director" :disabled="true" />
          </el-form-item>
          <el-form-item label="银行名称">
            <el-input v-model="supplierInfo.bankName" :disabled="true" />
          </el-form-item>
          <el-form-item label="邮箱">
            <el-input v-model="supplierInfo.mailbox" :disabled="true" />
          </el-form-item>
        </el-col>

        <!-- 第一行 第四列 -->
        <el-col :span="6">
          <el-form-item label="供方类型">
            <el-select v-model="supplierInfo.supplierType" style="width: 100%;" :disabled="true">
              <el-option v-for="item in supplierTypeDict" :key="item.id" :value="item.value" :label="item.name" />
            </el-select>
          </el-form-item>
          <el-form-item label="联系电话">
            <el-input v-model="supplierInfo.phone" :disabled="true" />
          </el-form-item>
          <el-form-item label="银行账号">
            <el-input v-model="supplierInfo.bankAccount" :disabled="true" />
          </el-form-item>
          <el-form-item label="网址">
            <el-input v-model="supplierInfo.website" :disabled="true" />
          </el-form-item>
        </el-col>
      </el-row>

      <!-- 第二行 -->
      <el-row :gutter="24">
        <!-- 第一列 -->
        <el-col :span="12">
          <el-form-item label="地址">
            <el-input v-model="supplierInfo.companyAddress" :disabled="true" />
          </el-form-item>
        </el-col>
      </el-row>

      <!-- 第三行 -->
      <el-row :gutter="24">
        <el-col :span="12">
          <el-form-item label="服务和供应的内容">
            <el-input v-model="supplierInfo.supplierContent" type="textarea" :rows="2" :disabled="true" />
          </el-form-item>
        </el-col>
      </el-row>

      <!-- 第四行 -->
      <el-row :gutter="24">
        <el-col :span="12">
          <el-form-item label="备注">
            <el-input v-model="supplierInfo.remark" type="textarea" :rows="2" :disabled="true" />
          </el-form-item>
        </el-col>
      </el-row>

      <!-- 第五行 -->
      <el-row :gutter="24">
        <el-col :span="12">
          <el-form-item label="附件">
            <template v-for="file in fileNameList" :key="file">
              <span style="margin-right: 15px;">{{ file }}</span>
            </template>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </app-container>
</template>