su
su1124
2024-01-29 8ebaef8428b67433a95b7c93abe229174145b3c4
su
1个文件已修改
374 ■■■■ 已修改文件
src/views/hosp/contract/index.vue 374 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hosp/contract/index.vue
@@ -1,59 +1,128 @@
<template>
    <div class="app-container">
        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
    <el-form
      :model="queryParams"
      ref="queryForm"
      size="small"
      :inline="true"
      v-show="showSearch"
      label-width="68px"
    >
            <el-form-item label="单位" prop="drugManufacturerId">
                <el-input v-model="queryParams.drugManufacturerId" placeholder="请输入单位id(外键)" clearable
                    @keyup.enter.native="handleQuery" />
        <el-input
          v-model="queryParams.drugManufacturerId"
          placeholder="请输入单位id(外键)"
          clearable
          @keyup.enter.native="handleQuery"
        />
            </el-form-item>
            <el-form-item label="合同名称" prop="contractName">
                <el-input v-model="queryParams.contractName" placeholder="请输入合同名称" clearable
                    @keyup.enter.native="handleQuery" />
        <el-input
          v-model="queryParams.contractName"
          placeholder="请输入合同名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
            </el-form-item>
            <el-form-item label="甲签约人" prop="aSignPerson">
                <el-input v-model="queryParams.aSignPerson" placeholder="请输入甲方签约人" clearable
                    @keyup.enter.native="handleQuery" />
        <el-input
          v-model="queryParams.aSignPerson"
          placeholder="请输入甲方签约人"
          clearable
          @keyup.enter.native="handleQuery"
        />
            </el-form-item>
            <el-form-item label="乙签约人" prop="bSignPerson">
                <el-input v-model="queryParams.bSignPerson" placeholder="请输入乙方签约人" clearable
                    @keyup.enter.native="handleQuery" />
        <el-input
          v-model="queryParams.bSignPerson"
          placeholder="请输入乙方签约人"
          clearable
          @keyup.enter.native="handleQuery"
        />
            </el-form-item>
            <el-form-item>
                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
                <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
        <el-button
          type="primary"
          icon="el-icon-search"
          size="mini"
          @click="handleQuery"
          >搜索</el-button
        >
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
          >重置</el-button
        >
            </el-form-item>
        </el-form>
        <el-row :gutter="10" class="mb8">
            <el-col :span="1.5">
                <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
                    v-hasPermi="['hosp:contract:add']">新增
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['hosp:contract:add']"
          >新增
                </el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
                    v-hasPermi="['hosp:contract:edit']">修改
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['hosp:contract:edit']"
          >修改
                </el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
                    v-hasPermi="['hosp:contract:remove']">删除
        <el-button
          type="danger"
          plain
          icon="el-icon-delete"
          size="mini"
          :disabled="multiple"
          @click="handleDelete"
          v-hasPermi="['hosp:contract:remove']"
          >删除
                </el-button>
            </el-col>
            <el-col :span="1.5">
                <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
                    v-hasPermi="['hosp:contract:export']">导出
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['hosp:contract:export']"
          >导出
                </el-button>
            </el-col>
            <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
      ></right-toolbar>
        </el-row>
        <el-table v-loading="loading" :data="contractList" @selection-change="handleSelectionChange">
    <el-table
      v-loading="loading"
      :data="contractList"
      @selection-change="handleSelectionChange"
    >
            <el-table-column type="selection" width="55" align="center" />
            <el-table-column label="主键" align="center" prop="id" />
            <el-table-column label="合同名称" align="center" prop="contractName" />
            <el-table-column label="签约时间" align="center" prop="signTime" width="180">
      <el-table-column
        label="签约时间"
        align="center"
        prop="signTime"
        width="180"
      >
                <template slot-scope="scope">
                    <span>{{ parseTime(scope.row.signTime, '{y}-{m}-{d}') }}</span>
          <span>{{ parseTime(scope.row.signTime, "{y}-{m}-{d}") }}</span>
                </template>
            </el-table-column>
            <el-table-column label="甲方签约人" align="center" prop="aSignPerson" />
@@ -61,27 +130,57 @@
            <el-table-column label="乙方签约人" align="center" prop="bSignPerson" />
            <el-table-column label="乙方联系电话" align="center" prop="bSignPhone" />
            <el-table-column label="合同金额" align="center" prop="contractAmount" />
            <el-table-column label="合同有效期" align="center" prop="contractValidTime" width="180">
      <el-table-column
        label="合同有效期"
        align="center"
        prop="contractValidTime"
        width="180"
      >
                <template slot-scope="scope">
                    <span>{{ parseTime(scope.row.contractValidTime, '{y}-{m}-{d}') }}</span>
          <span>{{
            parseTime(scope.row.contractValidTime, "{y}-{m}-{d}")
          }}</span>
                </template>
            </el-table-column>
            <el-table-column label="合同回款状态(1需首付2需付尾款3已结清)" align="center" prop="contractStatus" />
      <el-table-column
        label="合同回款状态(1需首付2需付尾款3已结清)"
        align="center"
        prop="contractStatus"
      />
            <el-table-column label="备注" align="center" prop="remark" />
            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
      >
                <template slot-scope="scope">
                    <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
                        v-hasPermi="['hosp:contract:edit']">修改
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['hosp:contract:edit']"
            >修改
                    </el-button>
                    <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
                        v-hasPermi="['hosp:contract:remove']">删除
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['hosp:contract:remove']"
            >删除
                    </el-button>
                </template>
            </el-table-column>
        </el-table>
        <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
            @pagination="getList" />
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
        <!-- 添加或修改合同对话框 -->
        <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
@@ -90,28 +189,47 @@
                    <el-input v-model="form.contractName" placeholder="请输入合同名称" />
                </el-form-item>
                <el-form-item label="签约时间" prop="signTime">
                    <el-date-picker clearable v-model="form.signTime" type="date" value-format="yyyy-MM-dd"
                        placeholder="请选择签约时间">
          <el-date-picker
            clearable
            v-model="form.signTime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择签约时间"
          >
                    </el-date-picker>
                </el-form-item>
                <el-form-item label="甲方签约人" prop="aSignPerson">
                    <el-input v-model="form.aSignPerson" placeholder="请输入甲方签约人" />
                </el-form-item>
                <el-form-item label="甲方联系电话" prop="aSignPhone">
                    <el-input v-model="form.aSignPhone" placeholder="请输入甲方联系电话" />
          <el-input
            v-model="form.aSignPhone"
            placeholder="请输入甲方联系电话"
          />
                </el-form-item>
                <el-form-item label="乙方签约人" prop="bSignPerson">
                    <el-input v-model="form.bSignPerson" placeholder="请输入乙方签约人" />
                </el-form-item>
                <el-form-item label="乙方联系电话" prop="bSignPhone">
                    <el-input v-model="form.bSignPhone" placeholder="请输入乙方联系电话" />
          <el-input
            v-model="form.bSignPhone"
            placeholder="请输入乙方联系电话"
          />
                </el-form-item>
                <el-form-item label="合同金额" prop="contractAmount">
                    <el-input v-model="form.contractAmount" placeholder="请输入合同金额" />
          <el-input
            v-model="form.contractAmount"
            placeholder="请输入合同金额"
          />
                </el-form-item>
                <el-form-item label="合同有效期" prop="contractValidTime">
                    <el-date-picker clearable v-model="form.contractValidTime" type="date" value-format="yyyy-MM-dd"
                        placeholder="请选择合同有效期">
          <el-date-picker
            clearable
            v-model="form.contractValidTime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择合同有效期"
          >
                    </el-date-picker>
                </el-form-item>
                <el-form-item label="备注" prop="remark">
@@ -125,29 +243,82 @@
        </el-dialog>
        <template>
            <el-button style="margin-top: 20px;" type="primary" plain size="mini" icon="el-icon-plus" @click="addmembers()">新增</el-button>
            <el-table v-loading="loading" :data="tjProjectList" @selection-change="handleSelectionChange" border
                style="margin:10px 0">
      <el-button
        style="margin-top: 20px"
        type="primary"
        plain
        size="mini"
        icon="el-icon-plus"
        @click="addmembers()"
        >新增</el-button
      >
      <el-table
        v-loading="loading"
        :data="tjProjectList"
        @selection-change="handleSelectionChange"
        border
        style="margin: 10px 0"
      >
                <el-table-column label="序号" align="center" type="index" />
                <el-table-column label="分组模式" align="center" prop="proName" width="260px">
        <el-table-column
          label="分组模式"
          align="center"
          prop="proName"
          width="260px"
        >
                    <template slot-scope="scope">
                        <el-select filterable v-model="scope.row.proName" placeholder="请选择项目名称">
                            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
            <el-select
              filterable
              v-model="scope.row.proName"
              placeholder="请选择项目名称"
            >
              <el-option
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
                            </el-option>
                        </el-select>
                    </template>
                </el-table-column>
                <el-table-column label="加项折扣率" align="center" prop="allSonProName" width="260px"
                    :show-overflow-tooltip="true">
        <el-table-column
          label="加项折扣率"
          align="center"
          prop="allSonProName"
          width="260px"
          :show-overflow-tooltip="true"
        >
                </el-table-column>
                <el-table-column label="优惠上限设置" align="center" prop="proPrice" width="260px" />
                <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
        <el-table-column
          label="优惠上限设置"
          align="center"
          prop="proPrice"
          width="260px"
        />
        <el-table-column
          label="操作"
          fixed="right"
          align="center"
          class-name="small-padding fixed-width"
        >
                    <template slot-scope="scope">
                        <el-button size="mini" type="text" icon="el-icon-circle-plus-outline" @click="addmembers(scope.row)"
                            v-hasPermi="['system:package:edit']" title="新增行"></el-button>
                        <el-button size="mini" type="text" icon="el-icon-delete"
                            @click.native.prevent="Delete(scope.$index)" v-hasPermi="['hosp:consumables:remove']"
                            title="删除"></el-button>
            <el-button
              size="mini"
              type="text"
              icon="el-icon-circle-plus-outline"
              @click="addmembers(scope.row)"
              v-hasPermi="['system:package:edit']"
              title="新增行"
            ></el-button>
            <el-button
              size="mini"
              type="text"
              icon="el-icon-delete"
              @click.native.prevent="Delete(scope.$index)"
              v-hasPermi="['hosp:consumables:remove']"
              title="删除"
            ></el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -161,39 +332,45 @@
    getContract,
    delContract,
    addContract,
    updateContract
  updateContract,
} from "@/api/hosp/contract";
export default {
    name: "Contract",
    data() {
        let checkPhoneNum = (rule, value, callback) => {
         console.log( value)
      console.log(value);
      let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/);
      if (value == "" && value == undefined && !value) {
        return callback('');
        return callback("");
      }  else if(value != undefined && value != ""){
        return callback();
      }else if (!patter.test(value)) {
        return callback('');
        return callback("");
      }
    };
        return {
            options: [{
                value: '选项1',
                label: '婚姻'
            }, {
                value: '选项2',
                label: '性别'
            }, {
                value: '选项3',
                label: '年龄'
            }],
            tjProjectList: [{
      options: [
        {
          value: "选项1",
          label: "婚姻",
        },
        {
          value: "选项2",
          label: "性别",
        },
        {
          value: "选项3",
          label: "年龄",
        },
      ],
      tjProjectList: [
        {
                proName: "婚姻",
                allSonProName: "1",
                proPrice: "1",
            }],
        },
      ],
            // 遮罩层
            loading: true,
            // 选中数组
@@ -228,15 +405,19 @@
            rules: {
                deleted: [
                    {
                        required: true, validator: checkPhoneNum,  trigger: "blur"
                    }
            required: true,
            validator: checkPhoneNum,
            trigger: "blur",
          },
                ],
                createTime: [
                    {
                        required: true, validator: checkPhoneNum,  trigger: "blur"
                    }
            required: true,
            validator: checkPhoneNum,
            trigger: "blur",
          },
                ],
            }
      },
        };
    },
    created() {
@@ -246,7 +427,7 @@
        /** 查询合同列表 */
        getList() {
            this.loading = true;
            listContract(this.queryParams).then(response => {
      listContract(this.queryParams).then((response) => {
                this.contractList = response.rows;
                this.total = response.total;
                this.loading = false;
@@ -276,7 +457,7 @@
                createBy: null,
                createTime: null,
                updateBy: null,
                updateTime: null
        updateTime: null,
            };
            this.resetForm("form");
        },
@@ -292,9 +473,9 @@
        },
        // 多选框选中数据
        handleSelectionChange(selection) {
            this.ids = selection.map(item => item.id)
            this.single = selection.length !== 1
            this.multiple = !selection.length
      this.ids = selection.map((item) => item.id);
      this.single = selection.length !== 1;
      this.multiple = !selection.length;
        },
        /** 新增按钮操作 */
        handleAdd() {
@@ -305,8 +486,8 @@
        /** 修改按钮操作 */
        handleUpdate(row) {
            this.reset();
            const id = row.id || this.ids
            getContract(id).then(response => {
      const id = row.id || this.ids;
      getContract(id).then((response) => {
                this.form = response.data;
                this.open = true;
                this.title = "修改合同";
@@ -314,9 +495,16 @@
        },
        // 新增行
        addmembers() {
            if (!this.tjProjectList) {
                this.tjProjectList = []
        this.tjProjectList = [];
        this.tjProjectList.push({
          id: parseInt(length),
          proName: "",
          allSonProName: "",
          proPrice: "",
          Selection,
        });
      } else {
                this.tjProjectList.push({
                    id: parseInt(length),
                    proName: "",
@@ -325,16 +513,7 @@
                    Selection,
                });
            }
            else {
                this.tjProjectList.push({
                    id: parseInt(length),
                    proName: "",
                    allSonProName: "",
                    proPrice: "",
                    Selection,
                });
            }
            this.$forceUpdate()
      this.$forceUpdate();
        },
        // 删除行
@@ -531,7 +710,6 @@
        //         ...this.queryParams
        //     }, `${businessName}_#[[${new Date().getTime()}.xlsx`)
        // }
    }
}
  },
};
</script>