123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 |
- <template>
- <div class="card-edit">
- <a-form :model="dataModel" autocomplete="off" @finish="onFinish">
- <a-divider orientation="left">运营机构信息</a-divider>
- <a-row type="flex">
- <a-col :span="8">
- <a-form-item label="企业名称" name="companyName" :label-col="{span:8}" :rules="[{ required: true, message: '请输入企业名称!' }]">
- <label v-if="opCategory==3">{{dataModel.companyName }}</label>
- <a-input v-model:value="dataModel.companyName" placeholder=""/>
- </a-form-item>
- </a-col>
- <a-col :span="7">
- <a-form-item label="企业地址" name="companyAddress" :label-col="{span:7}" :rules="[{ required: true, message: '请输入企业地址!' }]">
- <label v-if="opCategory==3">{{dataModel.companyAddress }}</label>
- <a-input v-model:value="dataModel.companyAddress" placeholder=""/>
- </a-form-item>
- </a-col>
- <a-col :span="8">
- <a-form-item label="负责人姓名" name="fzrName" :label-col="{span:8}" :rules="[{ required: true, message: '请输入负责人姓名!' }]">
- <label v-if="opCategory==3">{{dataModel.fzrName}}</label>
- <a-input v-model:value="dataModel.fzrName" placeholder=""/>
- </a-form-item>
- </a-col>
- </a-row>
- <a-row type="flex">
- <a-col :span="8">
- <a-form-item label="负责人电话" name="fzrMobile" :label-col="{span:8}" :rules="[{ required: true, message: '请输入负责人电话!' }]">
- <label v-if="opCategory==3">{{dataModel.fzrMobile }}</label>
- <a-input v-model:value="dataModel.fzrMobile" placeholder=""/>
- </a-form-item>
- </a-col>
- <a-col :span="7">
- <a-form-item label="法人姓名" name="frName" :label-col="{span:7}" :rules="[{ required: true, message: '请输入法人姓名!' }]">
- <label v-if="opCategory==3">{{dataModel.frName }}</label>
- <a-input v-model:value="dataModel.frName" placeholder=""/>
- </a-form-item>
- </a-col>
- <a-col :span="8">
- <a-form-item label="法人电话" name="frMobile" :label-col="{span:8}" :rules="[{ required: true, message: '请输入法人电话!' }]">
- <label v-if="opCategory==3">{{dataModel.frMobile }}</label>
- <a-input v-model:value="dataModel.frMobile" placeholder=""/>
- </a-form-item>
- </a-col>
- </a-row>
- <a-row type="flex">
- <a-col :span="8">
- <a-form-item label="企业机构代码" name="companyCode" :label-col="{span:8}" :rules="[{ required: true, message: '请输入企业机构代码!' }]">
- <label v-if="opCategory==3">{{dataModel.companyCode }}</label>
- <a-input v-model:value="dataModel.companyCode" placeholder=""/>
- </a-form-item>
- </a-col>
- <a-col :span="7">
- <a-form-item
- label="经济类型"
- :label-col="{ span: 7 }"
- name="economicTypeID"
- >
- <a-select
- ref="select"
- style="width: 100%"
- v-model:value="dataModel.economicTypeID"
- :options="companyTypeList"
- :field-names="{ label: 'name', value: 'value' }"
- >
- </a-select>
- </a-form-item>
- </a-col>
- <a-col :span="8">
- <a-form-item
- label="注册地址行政区划"
- :label-col="{ span: 8 }"
- name="signInPoliticalArea"
- >
- <a-input v-model:value="dataModel.signInPoliticalArea"></a-input>
- </a-form-item>
- </a-col>
- </a-row>
- <a-row type="flex">
- <a-col :span="8">
- <a-form-item
- label="营业执照有效期"
- :label-col="{ span: 8 }"
- name="validDate"
- >
- <a-radio-group v-model:value="showPicker" name="showPicker">
- <a-radio value="1">至长期</a-radio>
- <a-radio value="2">
- <a-date-picker
- v-model:value="showDateTime"
- picker="date"
- value-format="YYYY-MM-DD"
- :disabled="showPicker === '1'"
- />
- </a-radio>
- </a-radio-group>
- </a-form-item>
- </a-col>
- <a-col :span="7">
- </a-col>
- <a-col :span="8">
- </a-col>
- </a-row>
- <a-divider orientation="left" v-if="opCategory==2">管理驿站 共计:{{manageSites.length}}</a-divider>
- <!-- <a-row>
- <a-col :span="24" style="text-align: right; margin-top: 20px; margin-right: 20px">
- <Space>
- <a-button @click="addSite">
- <template #icon>
- <plus-circle-outlined/>
- </template>
- 新增
- </a-button>
- </Space>
- </a-col>
- </a-row>-->
- <a-row v-if="opCategory==2">
- <a-col style="margin-bottom: 20px;">
- <a-table :columns="columns" :data-source="manageSites" :pagination="pagination"
- :loading="formState.loading"
- @change="handleTableChange"
- :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange}"
- :row-key="record=>record.siteId"
- bordered>
- <template #bodyCell="{ column ,index}">
- <template v-if="column.key === 'siteName'">
- <div>
- <a-input v-model:value="manageSites[index][column.key]" style="border:none;text-align: center;"></a-input>
- <!-- <a-select
- ref="select"
- v-model:value="manageSites[index][column.key]"
- :options="allSites"
- @change="manageSitesChange(index,manageSites[index][column.key])"
- :field-names="{ label: 'siteName', value: 'siteID' }" style="width: 200px" >
- </a-select>-->
- </div>
- </template>
- <template v-if="column.key === 'detailAddress'">
- {{manageSites[index][column.key]}}
- </template>
- <!-- <template v-if="column.key === 'operation'">
- <a-button type="link" size="small" @click="delSite(index)">删除</a-button>
- </template>-->
- </template>
- </a-table>
- </a-col>
- </a-row>
- <a-divider orientation="left">其他</a-divider>
- <a-row>
- <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }" v-model:value="dataModel.companyDesc" :disabled="opCategory==3"
- placeholder="企业简介" style="text-align: left;vertical-align: middle;"/>
- </a-row>
- <a-row style="height: 10px"></a-row>
- <a-row>
- <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }" v-model:value="dataModel.remark" :disabled="opCategory==3"
- placeholder="备注" style="text-align: left;" />
- </a-row>
- <a-form-item class="buttom-btns">
- <a-button @click="onClose">取消</a-button>
- <a-button type="primary" html-type="submit">提交</a-button>
- </a-form-item>
- </a-form>
- </div>
- </template>
- <script lang="ts">
- import {computed, defineComponent, reactive, ref, toRefs} from "vue";
- import {useTabsViewStore} from "@/store/modules/tabsView";
- import {getInstitutionByID, saveInstitution} from "@/api/baseSettings/institution";
- import {getSiteList,getListByInstitutionID,getSiteByID} from "@/api/baseSettings/siteInfo";
- import BUploadFile from "@/components/file/uploadFile.vue";
- import {message, type SelectProps, TableColumnsType, TableProps} from "ant-design-vue";
- import {getPaginationTotalTitle} from "@/utils/common";
- import {getSysDictionaryList} from "@/api/system/dictionary";
- import dayjs from "dayjs";
- interface InstitutionModel {
- dataModel: any;
- }
- export default defineComponent({
- name:'InstitutionEditForm',
- components: {BUploadFile},
- props: {
- loadData: {
- type: Function,
- default: null
- }
- },
- setup() {
- const title = ref();
- const opCategory = ref();
- const tabsViewStore = useTabsViewStore();
- const isAllowCommit = ref<boolean>(false);
- const formData = reactive<InstitutionModel>({ dataModel:{}});
- const pageParams = reactive({
- pageIndex: 1,
- pageSize: 10,
- institutionID:''
- });
- const columns: TableColumnsType = [
- {title: '序号', align: "center",key: 'siteID',customRender: item => `${pageParams.pageSize * (pageParams.pageIndex - 1) + item.index + 1}`},
- {title: '驿站名称', dataIndex: 'siteName', key: 'siteName', align: "center"},
- {title: '驿站地址', dataIndex: 'detailAddress', key: 'detailAddress', align: "center"},
- /* {title: '操作', key: 'operation', fixed: 'right',width:170, align: "center"},*/
- ];
- const pagination = computed(() => ({
- total: formState.total,
- current: pageParams.pageIndex,
- pageSize: pageParams.pageSize,
- showSizeChanger: true,
- showTotal: total => getPaginationTotalTitle(total)
- }));
- const onSelectChange = (selectedRowKeys: any) => {
- formState.selectedRowKeys = selectedRowKeys;
- };
- const handleTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
- pageParams.pageIndex = pag.current;
- pageParams.pageSize = pag.pageSize;
- };
- const formState = reactive({
- total: 0,
- selectedRowKeys: [],
- loading: false
- });
- const allSites = ref<any>([]);
- const manageSites = ref<any>([]);
- const showPicker = ref('1');
- const showDateTime = ref<any>();
- const companyTypeList = ref<SelectProps['options']>();
- const getCompanyTypeList = async function () {
- const data: any = await getSysDictionaryList("CompanyType");
- companyTypeList.value = data;
- }
- const loadData = (institutionID: any,operateType:any) => {
- getAllSites();
- getCompanyTypeList();
- opCategory.value = operateType;
- getInstitutionByID(institutionID).then((result: any) => {
- formData.dataModel = result;
- GetManageSites(formData.dataModel.institutionID);
- showPicker.value = formData.dataModel.validDate == '2099-12-31T00:00:00.000+08:00' ? '1' : '2';
- if (showPicker.value === '1') {
- showDateTime.value = dayjs(new Date().toLocaleDateString().replaceAll("/", "-"));
- } else {
- showDateTime.value = formData.dataModel.validDate;
- }
- });
- }
- const getAllSites = () => {
- pageParams.institutionID = '';
- getSiteList(pageParams).then((result :any) => {
- allSites.value = result.list;
- // console.log('allSites',allSites);
- })
- }
- const GetManageSites = (id: string) => {
- pageParams.institutionID = id;
- getListByInstitutionID(pageParams).then((result :any)=> {
- manageSites.value = result.list;
- });
- }
- /* const addSite = () => {
- if(allSites.value.length >0){
- const newSite = allSites.value[0];
- (manageSites.value as any[]).push({siteID:newSite.siteID,siteName:newSite.siteName,detailAddress:newSite.detailAddress});
- validateSameSite();
- }else{
- message.error("未查询到站点信息!");
- }
- }
- const delSite = (site) =>{
- (manageSites.value as any[]).splice(site, 1);
- validateSameSite();
- }*/
- const manageSitesChange = (index:any,siteID:any) =>{
- getSiteByID(siteID).then((result :any)=> {
- manageSites.value[index]= result;
- // console.log("manageSites",manageSites.value);
- /*validateSameSite();*/
- });
- };
- /*const validateSameSite = ()=>{
- if(manageSites.value.length>1){
- manageSites.value.forEach(item=>{
- const sameData = manageSites.value.filter(x => x.siteID == item.siteID);
- // console.log("sameData",sameData);
- if (sameData.length >1){
- isAllowCommit.value = false;
- }
- });
- }
- };*/
- const mobileValidate = ()=>{
- isAllowCommit.value = true;
- const mobileReg = /^1[3|4|5|6|7|8|9]\d{9}$/;
- if(!mobileReg.test(formData.dataModel.frMobile)){
- message.error("输入的法人电话有误!");
- isAllowCommit.value = false;
- }
- if(!mobileReg.test(formData.dataModel.fzrMobile)){
- message.error("输入的负责人电话有误!");
- isAllowCommit.value = false;
- }
- };
- const onClose = (reload: any) => {
- tabsViewStore.closeCurrentTabByPath('/baseSettings/institution/add');
- tabsViewStore.closeCurrentTabByPath('/baseSettings/institution/edit');
- tabsViewStore.openTab('/baseSettings/institution/index',{reload:reload});
- };
- const onFinish = () => {
- mobileValidate();
- if (showPicker.value === '1') {
- formData.dataModel.validDate = '2099-12-31T00:00:00.000+08:00';
- } else {
- formData.dataModel.validDate = showDateTime.value;
- }
- if (isAllowCommit.value){
- formData.dataModel.manageSites = manageSites.value;
- saveInstitution(formData.dataModel).then(result => {
- if (result) {
- onClose(1);
- }
- });
- }
- };
- return {
- ...toRefs(formData),
- loadData,
- onClose,
- onFinish,
- title,
- opCategory,
- columns,
- pageParams,
- pagination,
- formState,
- allSites,
- manageSites,
- isAllowCommit,
- companyTypeList,
- showPicker,
- showDateTime,
- getAllSites,
- GetManageSites,
- /*addSite,
- delSite,*/
- handleTableChange,
- onSelectChange,
- manageSitesChange,
- };
- },
- created() {
- const id = history.state.params?.id;
- const operateType = history.state.params?.op;
- this.loadData(id,operateType);
- },
- })
- </script>
|