yxh
yxh
2024-01-05 26c14f0c6defe02f2b6f15b498bcd454461ee7a8
src/views/project/donationdetails/index.vue
@@ -619,7 +619,7 @@
              <el-form-item label="签字亲属" prop="kinshipconfirmationsign">
                <el-checkbox-group v-model="organdecision">
                  <el-checkbox v-for="item in kinshiplist" :label="item">
                    {{ item == '子女' ? item + '(人)' : item }}
                    {{ item == "子女" ? item + "(人)" : item }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
@@ -635,9 +635,10 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-row></el-form-item><el-form-item label-width="100px" label="捐献决定">
          <el-row>
            <el-form-item label-width="100px" label="捐献决定">
              <el-checkbox-group v-model="organdecision">
                <el-checkbox v-for="item in organlist" :label="item">
                <el-checkbox v-for="item in organselection" :label="item">
                  {{ item }}
                </el-checkbox>
              </el-checkbox-group>
@@ -739,8 +740,7 @@
                <el-date-picker clearable size="small" v-model="ethicform.conclusiontime" type="date"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择结论时间">
                </el-date-picker>
              </el-form-item>
            </el-col></el-row>
              </el-form-item> </el-col></el-row>
        </el-form>
        <div class="dialog-footer" style="min-height: 500px; margin: 20px 0; ">
          <el-button v-show="!showTerminationBtn" type="primary" @click="Savethedetails">保存</el-button>
@@ -756,12 +756,12 @@
        </div>
      </div>
      <!-- 器官分配 -->
      <div class="boxdiv" v-show="actives == 4 || actives == 5 || actives == 6">
        <el-form ref="allocationform" :model="allocationform" :rules="allocationrules" label-position="right">
      <div class="boxdiv" v-show="actives == 4">
        <el-form ref="allocateddata" :model="allocateddata" :rules="allocationrules" label-position="right">
          <el-row>
            <el-col>
              <el-form-item label-width="100px" label="选择器官">
                <el-checkbox-group v-model="organalForm.organname">
              <el-form-item label-width="100px" label="分配器官">
                <el-checkbox-group v-model="organList.organallocated">
                  <el-checkbox v-for="dict in dict.type.sys_Organ" :key="dict.value" :label="dict.value"
                    @change="changeorganState(dict.value)">
                    {{ dict.label }}
@@ -773,28 +773,32 @@
          <el-row>
            <el-col>
              <el-form-item>
                <el-table v-loading="loading" border :data="allocationform">
                  <el-table-column label="器官名称" align="center" width="100" prop="organname" />
                  <el-table-column label="器官编号" align="center" width="100" prop="organno" />
                  <el-table-column label="系统编号" align="center" width="120" prop="ageunit" v-if="actives == 4">
                <el-table v-loading="loading" border :data="allocateddata">
                  <el-table-column label="器官名称" align="center" width="110" prop="organname">
                    <template slot-scope="scope">
                      <el-input v-model="scope.row.ageunit" placeholder="系统编号" />
                      <el-input v-model="scope.row.organname" placeholder="器官名称" :disabled="scope.row.organno != 'C01'" />
                    </template>
                  </el-table-column>
                  <el-table-column label="接收时间" align="center" width="200" prop="applicanttime" v-if="actives == 4">
                  <el-table-column label="器官编号" align="center" width="90" prop="organno" />
                  <el-table-column label="系统编号" align="center" width="120" prop="caseno">
                    <template slot-scope="scope">
                      <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.applicanttime" type="datetime"
                        value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择接收时间">
                      <el-input v-model="scope.row.caseno" placeholder="系统编号" />
                    </template>
                  </el-table-column>
                  <el-table-column label="接收时间" align="center" width="200" prop="applicanttime">
                    <template slot-scope="scope">
                      <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.applicanttime"
                        type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择接收时间">
                      </el-date-picker>
                    </template>
                  </el-table-column>
                  <el-table-column label="受体姓名" align="center" width="120" prop="name" v-if="actives == 4">
                  <el-table-column label="受体姓名" align="center" width="120" prop="name">
                    <template slot-scope="scope">
                      <el-input v-model="scope.row.name" placeholder="受体姓名" />
                    </template>
                  </el-table-column>
                  <!--
              <el-table-column label="证件类型" align="center" width="150" prop="idcardtype" v-if="actives == 4">
              <el-table-column label="证件类型" align="center" width="150" prop="idcardtype">
                <template slot-scope="scope">
                  <el-select v-model="scope.row.idcardtype" placeholder="移植人证件类型">
                    <el-option v-for="dict in dict.type.sys_IDType" :key="dict.value" :label="dict.label"
@@ -802,96 +806,30 @@
                  </el-select>
                </template>
              </el-table-column>
              <el-table-column label="证件号码" align="center" width="200" prop="idcardno" v-if="actives == 4">
              <el-table-column label="证件号码" align="center" width="200" prop="idcardno">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.idcardno" placeholder="证件号码" />
                </template>
              </el-table-column>
              -->
                  <el-table-column label="分配状态" align="center" width="150" prop="allocationstatus" v-if="actives == 4">
              </el-table-column>
                  <el-table-column label="分配状态" align="center" width="150" prop="allocationstatus">
                    <template slot-scope="scope">
                      <el-select v-model="scope.row.allocationstatus" placeholder="请选择器官状态">
                        <el-option v-for="dict in allocationstatuslist" :key="dict.value" :label="dict.label"
                          :value="dict.value"></el-option>
                      </el-select>
                    </template>
                  </el-table-column>
                  <el-table-column prop="reallocationreason" label="重分配说明" align="center" v-if="actives == 4">
                  </el-table-column>
                -->
                  <el-table-column prop="reallocationreason" label="说明" align="center">
                    <template slot-scope="scope">
                      <el-input clearable v-model="scope.row.reallocationreason" placeholder="请输入重分配说明" />
                      <el-input type="textarea" clearable v-model="scope.row.reallocationreason" placeholder="请输入说明" />
                    </template>
                  </el-table-column>
                  <el-table-column label="器官离体时间" align="center" width="200" prop="organgettime" v-if="actives == 5">
                    <template slot-scope="scope">
                      <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.organgettime" type="datetime"
                        value-format="yyyy-MM-dd HH:mm:ss" placeholder="请输入器官离体时间">
                      </el-date-picker>
                    </template>
                  </el-table-column>
                  <el-table-column label="获取医院" align="center" width="230" prop="gainhospitalno" v-if="actives == 5">
                    <template slot-scope="scope">
                      <div class="elldiv">
                        <org-selecter ref="tranHosSelect" :org-type="'4'" v-model="scope.row.gainhospitalno" />
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column label="获取医师" align="center" width="120" prop="organgetdoct" v-if="actives == 5">
                    <template slot-scope="scope">
                      <el-input v-model="scope.row.organgetdoct" placeholder="请输入医师姓名" />
                    </template>
                  </el-table-column>
                  <el-table-column label="获取状态" align="center" width="150" prop="organstate" v-if="actives == 5">
                <template slot-scope="scope">
                  <el-select v-model="scope.row.organstate" placeholder="请选择器官状态">
                    <el-option v-for="dict in organstatelist" :key="dict.value" :label="dict.label"
                      :value="dict.value"></el-option>
                  </el-select>
                </template>
              </el-table-column>
                  <el-table-column label="说明" align="center" prop="notgetreason" v-if="actives == 5">
                    <template slot-scope="scope">
                      <el-input clearable v-model="scope.row.notgetreason" placeholder="请输入未获取说明" />
                    </template>
                  </el-table-column>
                  <el-table-column label="移植医院" align="center" width="230" prop="transplanthospitalname"
                    v-if="actives == 6">
                    <template slot-scope="scope">
                      <org-selecter ref="tranHosSelect" :org-type="'4'" v-model="scope.row.transplanthospitalno"
                        style="width: 100%" />
                    </template>
                  </el-table-column>
                  <el-table-column label="移植负责人" align="center" width="120" prop="transplantdoct" v-if="actives == 6">
                    <template slot-scope="scope">
                      <el-input  v-model="scope.row.transplantdoct" placeholder="医师姓名" />
                    </template>
                  </el-table-column>
                  <el-table-column label="移植时间" align="center" width="200" prop="transplanttime" v-if="actives == 6">
                    <template slot-scope="scope">
                      <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.transplanttime" type="datetime"
                        value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择移植时间">
                      </el-date-picker>
                    </template>
                  </el-table-column>
                  <el-table-column label="移植状态" align="center" width="150" prop="transplantstate" v-if="actives == 6">
                    <template slot-scope="scope">
                      <el-select v-model="scope.row.transplantstate" placeholder="请选择器官状态">
                        <el-option v-for="dict in transplantstatelist" :key="dict.value" :label="dict.label"
                          :value="dict.value"></el-option>
                      </el-select>
                    </template>
                  </el-table-column>
                  <el-table-column prop="abandonreason" label="说明" align="center" v-if="actives == 6">
                    <template slot-scope="scope">
                      <el-input clearable v-model="scope.row.abandonreason" placeholder="请输入弃用说明" />
                    </template>
                  </el-table-column>
                  <el-table-column label="操作" width="200" align="center" class-name="small-padding fixed-width"
                  <el-table-column label="操作" align="center" width="100" class-name="small-padding fixed-width"
                    v-if="actives == 4">
                    <template slot-scope="scope">
                      <el-button size="mini" type="text" icon="el-icon-copy-document"
                        @click="deldistribution(scope.row)">删除</el-button>
                      <el-button size="mini" type="text" icon="el-icon-copy-document"
                        @click="redistribution(scope.row)">重新分配</el-button>
                        @click="redistribution(scope.row)">重分配</el-button>
                    </template>
                  </el-table-column>
                </el-table>
@@ -927,120 +865,160 @@
          </el-row>
          <el-row> </el-row>
          <el-row>
            <el-col :span="2">
              <el-form-item align="left" label="死亡判定:" />
            </el-col>
            <el-col :span="10">
              <el-form-item align="left" label="医生一" prop="deathjudgedocto">
            <el-col :span="6">
              <el-form-item align="left" label="死亡判定:医生一" label-width="140px" prop="deathjudgedocto">
                <el-input v-model="witnessform.deathjudgedocto" placeholder="判定医生姓名" />
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item align="left" label="医生二" prop="deathjudgedoctt">
            <el-col :span="6">
              <el-form-item align="left" label="医生二" label-width="120px" prop="deathjudgedoctt">
                <el-input v-model="witnessform.deathjudgedoctt" placeholder="判定医生姓名" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row><el-col :span="2"><el-form-item align="left" label="" /> </el-col>
            <el-col :span="10">
              <el-form-item align="left" label="死亡时间" prop="deathtime">
            <el-col :span="6">
              <el-form-item align="left" label="死亡时间" label-width="120px" prop="deathtime">
                <el-date-picker clearable v-model="witnessform.deathtime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择死亡时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item align="left" label="死亡原因" prop="deathreason">
            <el-col :span="6">
              <el-form-item align="left" label="死亡原因" label-width="120px" prop="deathreason">
                <el-input v-model="witnessform.deathreason" placeholder="请输入死亡原因" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="2">
              <el-form-item align="left" label="手术:" />
            </el-col>
            <el-col :span="10">
              <el-form-item align="left" label="开始时间" prop="operationbegtime">
            <el-col :span="6">
              <el-form-item align="left" label="手术:开始时间" label-width="140px" prop="operationbegtime">
                <el-date-picker clearable v-model="witnessform.operationbegtime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择手术开始时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item align="left" label="结束时间" prop="operationendtime">
            <el-col :span="6">
              <el-form-item align="left" label="结束时间" label-width="120px" prop="operationendtime">
                <el-date-picker clearable v-model="witnessform.operationendtime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择手术结束时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row><el-col :span="2"><el-form-item align="left" label="腹主动脉:" />
            </el-col>
            <el-col :span="10">
              <el-form-item label="插管时间" align="left" prop="abdominalaortacannulatime">
          <el-row>
            <el-col :span="6">
              <el-form-item label="腹主动脉:插管时间" align="left" label-width="140px" prop="abdominalaortacannulatime">
                <el-date-picker clearable v-model="witnessform.abdominalaortacannulatime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择腹主动脉插管时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item label="灌注时间" align="left" prop="abdominalaortaperfusiontime">
            <el-col :span="6">
              <el-form-item label="灌注时间" align="left" label-width="120px" prop="abdominalaortaperfusiontime">
                <el-date-picker clearable v-model="witnessform.abdominalaortaperfusiontime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择腹主动脉灌注时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row><el-col :span="2"><el-form-item align="left" label="门静脉:" />
            </el-col>
            <el-col :span="10">
              <el-form-item label="插管时间" align="left" prop="portalveincannulatime">
            <el-col :span="6">
              <el-form-item label="门静脉:插管时间" align="left" label-width="140px" prop="portalveincannulatime">
                <el-date-picker clearable v-model="witnessform.portalveincannulatime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择门静脉脉插管时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item label="灌注时间" align="left" prop="portalveinperfusiontime">
            <el-col :span="6">
              <el-form-item label="灌注时间" align="left" label-width="120px" prop="portalveinperfusiontime">
                <el-date-picker clearable v-model="witnessform.portalveinperfusiontime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择门静脉灌注时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row><el-col :span="2"><el-form-item align="left" label="肺动脉:" />
            </el-col>
            <el-col :span="10">
              <el-form-item label="插管时间" align="left" prop="pulmonaryarterycannulatime">
          <el-row>
            <el-col :span="6">
              <el-form-item label="肺动脉:插管时间" align="left" label-width="140px" prop="pulmonaryarterycannulatime">
                <el-date-picker clearable v-model="witnessform.pulmonaryarterycannulatime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择门静脉插管时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item label="灌注时间" align="left" prop="pulmonaryarteryperfusiontime">
            <el-col :span="6">
              <el-form-item label="灌注时间" align="left" label-width="120px" prop="pulmonaryarteryperfusiontime">
                <el-date-picker clearable v-model="witnessform.pulmonaryarteryperfusiontime" type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择门静脉灌注时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row><el-col :span="2"><el-form-item align="left" label="主动脉:" />
            </el-col>
            <el-col :span="10">
              <el-form-item label="灌注时间" align="left" prop="aortacannulatime">
            <el-col :span="6">
              <el-form-item label="主动脉:灌注时间" align="left" label-width="140px" prop="aortacannulatime">
                <el-date-picker clearable v-model="witnessform.aortacannulatime" type="datetime"
                  value-format="yyyy-MM-dd  HH:mm:ss" placeholder="选择主动脉灌注时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="10">
              <el-form-item label="灌注时间" align="left" prop="aortaperfusiontime">
            <el-col :span="6">
              <el-form-item label="灌注时间" align="left" label-width="120px" prop="aortaperfusiontime">
                <el-date-picker clearable v-model="witnessform.aortaperfusiontime" type="datetime"
                  value-format="yyyy-MM-dd  HH:mm:ss" placeholder="选择主动脉灌注时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col>
              <el-form-item label-width="100px" label="获取器官">
                <el-checkbox-group v-model="organList.organprocured">
                  <el-checkbox v-for="dict in dict.type.sys_Organ" :key="dict.value" :label="dict.value"
                    @change="changeorganprocured(dict.value)">
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col>
              <el-form-item>
                <el-table v-loading="loading" border :data="procureddata">
                  <el-table-column label="器官名称" align="center" width="110" prop="organname">
                    <template slot-scope="scope">
                      <el-input v-model="scope.row.organname" placeholder="器官名称" :disabled="scope.row.organno != 'C01'" />
                    </template>
                  </el-table-column>
                  <el-table-column label="器官编号" align="center" width="90" prop="organno" />
                  <el-table-column label="器官离体时间" align="center" width="200" prop="organgettime">
                    <template slot-scope="scope">
                      <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.organgettime"
                        type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="请输入器官离体时间">
                      </el-date-picker>
                    </template>
                  </el-table-column>
                  <el-table-column label="获取医院" align="center" width="230" prop="gainhospitalno">
                    <template slot-scope="scope">
                      <div class="elldiv">
                        <org-selecter ref="tranHosSelect" :org-type="'4'" v-model="scope.row.gainhospitalno" />
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column label="获取医师" align="center" width="120" prop="organgetdoct">
                    <template slot-scope="scope">
                      <el-input v-model="scope.row.organgetdoct" placeholder="请输入医师姓名" />
                    </template>
                  </el-table-column>
                  <el-table-column label="获取状态" align="center" width="150" prop="organstate">
                    <template slot-scope="scope">
                      <el-select v-model="scope.row.organstate" placeholder="请选择器官状态">
                        <el-option v-for="dict in organstatelist" :key="dict.value" :label="dict.label"
                          :value="dict.value"></el-option>
                      </el-select>
                    </template>
                  </el-table-column>
                  <el-table-column label="说明" align="center" prop="notgetreason">
                    <template slot-scope="scope">
                      <el-input type="textarea" clearable v-model="scope.row.notgetreason" placeholder="请输入未获取说明" />
                    </template>
                  </el-table-column>
                </el-table>
              </el-form-item>
            </el-col>
          </el-row>
@@ -1108,6 +1086,64 @@
        <el-form ref="accomplishform" :model="accomplishform" :rules="accomplishrules" label-width="100px"
          label-position="right">
          <el-row>
            <el-col>
              <el-form-item label-width="100px" label="移植器官">
                <el-checkbox-group v-model="organList.organtransplant">
                  <el-checkbox v-for="dict in dict.type.sys_Organ" :key="dict.value" :label="dict.value"
                    @change="changeorgantransplant(dict.value)">
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col>
              <el-form-item>
                <el-table v-loading="loading" border :data="transplantdata">
                  <el-table-column label="器官名称" align="center" width="110" prop="organname">
                    <template slot-scope="scope">
                      <el-input v-model="scope.row.organname" placeholder="器官名称" :disabled="scope.row.organno != 'C01'" />
                    </template>
                  </el-table-column>
                  <el-table-column label="器官编号" align="center" width="90" prop="organno" />
                  <el-table-column label="移植医院" align="center" width="220" prop="transplanthospitalname"
                    v-if="actives == 6">
                    <template slot-scope="scope">
                      <org-selecter ref="tranHosSelect" :org-type="'4'" v-model="scope.row.transplanthospitalno"
                        style="width: 100%" />
                    </template>
                  </el-table-column>
                  <el-table-column label="移植负责人" align="center" width="120" prop="transplantdoct">
                    <template slot-scope="scope">
                      <el-input v-model="scope.row.transplantdoct" placeholder="医师姓名" />
                    </template>
                  </el-table-column>
                  <el-table-column label="移植时间" align="center" width="200" prop="transplanttime">
                    <template slot-scope="scope">
                      <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.transplanttime"
                        type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择移植时间">
                      </el-date-picker>
                    </template>
                  </el-table-column>
                  <el-table-column label="移植状态" align="center" width="150" prop="transplantstate">
                    <template slot-scope="scope">
                      <el-select v-model="scope.row.transplantstate" placeholder="请选择器官状态">
                        <el-option v-for="dict in transplantstatelist" :key="dict.value" :label="dict.label"
                          :value="dict.value"></el-option>
                      </el-select>
                    </template>
                  </el-table-column>
                  <el-table-column prop="abandonreason" label="说明" align="center">
                    <template slot-scope="scope">
                      <el-input type="textarea" clearable v-model="scope.row.abandonreason" placeholder="请输入弃用说明" />
                    </template>
                  </el-table-column>
                </el-table>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item align="left" label="遗体捐献" prop="isbodydonation">
                <el-radio-group v-model="accomplishform.isbodydonation">
@@ -1158,7 +1194,6 @@
              </el-form-item>
            </el-col>
          </el-row>
          </el-row>
        </el-form>
        <div class="dialog-footer">
          <el-button v-show="!showTerminationBtn" type="primary" @click="Savethedetails">保存</el-button>
@@ -1200,12 +1235,11 @@
            <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileList"
              :show-file-list="false" multiple drag :headers="headers" :on-success="(response, file, fileList) =>
                uploadSccess(response, file, fileList)
                " :on-preview="downFile" :disabled="operationType == 'detail'" :on-error="handleUploadError"
              :on-remove="remove" accept="image/*,.pdf">
                " :on-preview="downFile" :on-error="handleUploadError" :on-remove="remove" accept="image/*,.pdf">
              <i class="el-icon-upload"></i>
              <div class="el-upload__text">
                将发票文件拖到此处,或
                <em><el-button :disabled="operationType == 'detail'" size="small" type="primary">点击上传</el-button></em>
                <em><el-button size="small" type="primary">点击上传</el-button></em>
              </div>
            </el-upload>
            <el-table :data="fileListto" @row-click="downFile" style="width: 100%" height="400">
@@ -1294,7 +1328,7 @@
  getEthicalreviewopinions,
  addEthicalreviewopinions,
  updateEthicalreviewopinions,
  listnewEthicalreviewopinions,
  listnewEthicalreviewopinions
} from "@/api/project/ethicalreviewopinions";
import {
  addDonateflowchart,
@@ -1305,7 +1339,8 @@
  listDonateorgan,
  addDonateorgan,
  delDonateorgan,
  updateDonateorgan
  updateDonateorgan,
  saveDonateorgan
} from "@/api/project/donateorgan";
import {
  listOrganallocation,
@@ -1316,12 +1351,18 @@
  addDonationwitness,
  updateDonationwitness,
  getDonationwitness,
  getByInfoId
  getByInfoId,
  listDonationwitnessorgan,
  saveDonationwitnessorgan,
  delDonationwitnessorgan
} from "@/api/project/donationwitness";
import {
  listnewDonatecompletioninfo,
  addDonatecompletioninfo,
  updateDonatecompletioninfo
  updateDonatecompletioninfo,
  listDonatecomporgan,
  saveDonatecomporgan,
  delDonatecomporgan
} from "@/api/project/donatecompletioninfo";
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
@@ -1360,11 +1401,11 @@
      },
      organdecision: [],
      ethicform: {
        infoid: null,
        infoid: null
      },
      kinshiplist: ["配偶", "父亲", "母亲", "子女", "受托人"],
      organlist: [
      organselection: [
        "肝脏",
        "双肾脏",
        "心脏",
@@ -1375,9 +1416,20 @@
        "遗体",
        "其他"
      ],
      //选择器官表单
      organList: {
        //分配列表
        organallocated: [],
        //获取列表
        organprocured: [],
        //完成列表
        organtransplant: []
      },
      //器官状态
      allocationstatuslist: [
        { value: 1, label: "已分配" },
        { value: 2, label: "作废" }
        { value: 2, label: "重分配" }
      ],
      organstatelist: [
        { value: "1", label: "已获取" },
@@ -1388,7 +1440,11 @@
        { value: 2, label: "库存" },
        { value: 3, label: "弃用" }
      ],
      allocationform: [],
      //器官数据
      allocateddata: [],
      procureddata: [],
      transplantdata: [],
      witnessform: {
        infoid: null
      },
@@ -1404,12 +1460,10 @@
      //   保存、终止按钮确认
      showSaveBtn: true,
      showTerminationBtn: 0, //终止状态 0-未终止 1-已终止
      //选择器官表单
      organalForm: {
        //器官列表
        organname: []
      // 流程数据:donatebaseinfo[createtime,updatetime]、medicalevaluation、relativesconfirmation、donateflowcharts、donateorgansService、donationwitness、donatecompletioninfo
      Processdata: {
      },
      Processdata: {}, //流程数据
      //省市区默认值设置,可为空
      searchAddress: {
        sheng: "",
@@ -1536,6 +1590,8 @@
      allocationrules: {},
      witnessrules: {},
      accomplishrules: {},
      //报告人列表
      reporters: [],
      //附件列表
      annexfilesList: [], //附件展示列
@@ -1574,6 +1630,18 @@
    // this.id = this.$route.query.id;
    this.Getbasicinformation();
    this.listDonateannex();
    //获取报告人列表:专职人员
    listReportname("zzry").then(res => {
      this.reporters = res.data;
    });
    //获取协调员列
    listReportname("xty1").then(res => {
      this.coordinatorlist1 = res.data;
    });
    //获取负责人列
    listReportname("fzr").then(res => {
      this.leaderlist = res.data;
    });
  },
  methods: {
@@ -1581,18 +1649,10 @@
    Getbasicinformation() {
      // 左侧流程数据
      getDonatebaseinfoflow(this.infoid).then(res => {
        console.log(res.data);
        console.log("getDonatebaseinfoflow", res.data);
        this.Processdata = res.data;
      });
      //获取协调员列
      listReportname("xty1").then(res => {
        this.coordinatorlist1 = res.data;
      });
      //获取负责人列
      listReportname("fzr").then(res => {
        this.leaderlist = res.data;
      });
      // 表单数据
      getDonatebaseinfo(this.infoid).then(response => {
        this.form = response.data;
@@ -1681,7 +1741,7 @@
        if (this.ethicform.infoid) {
          return;
        }
        //listDonateflowchart(searchParam).then(response => {
        //listDonateflowchart(searchParam).then(response => {
        listEthicalreviewopinions(searchParam).then(response => {
          if (response.code == 200 && response.rows.length) {
            this.ethicform = response.rows[0];
@@ -1689,37 +1749,45 @@
            console.log("伦理审查数据为空");
          }
        });
      } else if (this.actives == 4 && !this.allocationform[0]) {
        listDonateorgan(searchParam).then(response => {
          if (response.code == 200) {
            if (response.rows[0]) {
              this.allocationform = response.rows;
      } else if (this.actives == 4 && !this.allocateddata[0]) {
        listDonateorgan(searchParam).then(res => {
          if (res.code == 200) {
            if (res.rows[0]) {
              this.allocateddata = res.rows;
            }
            this.organalForm.organname = [];
            for (let i = 0; i < response.rows.length; i++) {
              this.organalForm.organname.push(response.rows[i].organno);
            this.organList.organallocated = [];
            for (let i = 0; i < res.rows.length; i++) {
              this.organList.organallocated.push(this.allocateddata[i].organno);
            }
          } else {
            // this.$modal.msgError(
            //   "获取器官分配信息失败:" + JSON.stringify(response)
            //   "获取器官分配信息失败:" + JSON.stringify(res)
            // );
          }
        });
      } else if (this.actives == 5 && !this.witnessform.infoid) {
        // 不存在时获取器官信息
        if (!this.allocationform[0]) {
          listDonateorgan(searchParam).then(resall => {
            if (resall.code == 200) {
              if (resall.rows[0]) {
                this.allocationform = resall.rows;
              }
            } else {
              // this.$modal.msgError(
              //   "器官列表获取失败:" + JSON.stringify(resall)
              // );
            }
          });
        if (this.witnessform.infoid) {
          return;
        }
        listDonationwitnessorgan(searchParam).then(res => {
          if (res.code == 200) {
            if (res.rows[0]) {
              this.procureddata = res.rows;
              this.procureddata.infoid = this.infoid;
            }
            this.organList.organprocured = [];
            for (let i = 0; i < this.procureddata.length; i++) {
              this.organList.organprocured.push(this.procureddata[i].organno);
            }
          } else {
            // this.$modal.msgError(
            //   "器官列表获取失败:" + JSON.stringify(resall)
            // );
          }
        });
        // 获取当前见证信息
        getByInfoId(searchParam.infoid).then(response => {
          if (response.code == 200) {
@@ -1736,19 +1804,22 @@
      } else if (this.actives == 6) {
        this.annexfilesList = this.registerlist;
        this.activetele = "完成登记";
        if (this.allocationform.infoid) {
        if (this.accomplishform.infoid) {
          return;
        }
        // 不存在时获取器官
        let accpre = {
          id: searchParam.infoid
        };
        // 不存在时获取器官
        if (!this.allocationform[0]) {
          listDonateorgan(searchParam).then(resall => {
            if (resall.code == 200) {
              if (resall.rows[0]) {
                this.allocationform = resall.rows;
                this.allocationform.infoid = this.infoid;
        if (!this.organList.organtransplant[0]) {
          listDonatecomporgan(searchParam).then(res => {
            if (res.code == 200) {
              if (res.rows[0]) {
                this.transplantdata = res.rows;
                this.transplantdata.infoid = this.infoid;
              }
              for (let i = 0; i < this.transplantdata.length; i++) {
                this.organList.organtransplant.push(this.transplantdata[i].organno);
              }
            } else {
              // this.$modal.msgError(
@@ -1900,14 +1971,13 @@
        this.$refs["ethicform"].validate(valid => {
          if (valid) {
            if (this.ethicform.id != null) {
              // updateDonateflowchart(this.ethicform).then(response => {
              updateEthicalreviewopinions(this.ethicform).then(response => {
              // updateDonateflowchart(this.ethicform).then(response => {
              updateEthicalreviewopinions(this.ethicform).then(res => {
                this.$modal.msgSuccess("伦理审查信息修改成功");
              });
            } else {
              //addDonateflowchart(this.ethicform).then(response => {
              addEthicalreviewopinions(this.ethicform).then(response => {
              //addDonateflowchart(this.ethicform).then(response => {
              addEthicalreviewopinions(this.ethicform).then(res => {
                this.$modal.msgSuccess("伦理审查信息新增成功");
              });
            }
@@ -1915,25 +1985,34 @@
          }
        });
      } else if (this.actives == 4) {
        this.allocationform.infoid = this.infoid;
        this.$refs["allocationform"].validate(valid => {
          if (valid) {
            let arrallo = [];
            this.allocationform.map(item => {
              if (item.id) {
                item.applicanttime = formatDate(item.applicanttime);
                updateDonateorgan(item).then(response => { });
              } else {
                arrallo.push(item);
              }
            });
            if (arrallo.length) {
              addOrganallocation(arrallo).then(response => {
                this.$modal.msgSuccess("器官捐献信息新增成功");
              });
        this.procureddata.infoid = this.infoid;
        this.$refs["allocateddata"].validate(valid => {
          /**
          let rows = [];
          this.allocateddata.map(item => {
            if (item.id) {
              item.applicanttime = formatDate(item.applicanttime);
              updateDonateorgan(item).then(response => { });
            } else {
              item.infoid=this.infoid;
              rows.push(item);
            }
            this.Processvalidation();
          });
          if (rows.length) {
            addOrganallocation(rows).then(res => {
              this.$modal.msgSuccess("器官捐献信息新增成功");
            });
          }
           */
          this.allocateddata.map(item => {
            item.applicanttime = formatDate(item.applicanttime);
          });
          saveDonateorgan(this.allocateddata).then(res => {
            if (res == 200) {
              this.$modal.msgSuccess("器官捐献分配信息保存成功!");
            }
          });
          this.Processvalidation();
        });
      } else if (this.actives == 5) {
        this.witnessform.infoid = this.infoid;
@@ -1955,18 +2034,8 @@
              coordinatedusernametIndex
            ].reportName;
          }
          console.log("juanxian");
          if (valid) {
            // 保存器官分配表数据
            let arrallo = [];
            this.allocationform.map(item => {
              if (item.id) {
                item.applicanttime = formatDate(item.applicanttime);
                updateDonateorgan(item).then(response => { });
              } else {
                arrallo.push(item);
              }
            });
            if (this.witnessform.id != null) {
              console.log(456);
              updateDonationwitness(this.witnessform).then(response => {
@@ -1978,6 +2047,16 @@
                this.$modal.msgSuccess("获取见证信息新增成功");
              });
            }
            //保存器官获取表数据
            this.procureddata.infoid = this.infoid;
            console.log("procureddata", this.procureddata);
            saveDonationwitnessorgan(this.procureddata).then(res => {
              if (res == 200) {
                this.$modal.msgSuccess("捐献器官获取信息保存成功!");
              }
            });
            this.form.donationcategory = this.witnessform.donationcategory;
            this.Processvalidation();
          }
@@ -1986,16 +2065,15 @@
        this.accomplishform.infoid = this.infoid;
        this.$refs["accomplishform"].validate(valid => {
          if (valid) {
            // 保存器官分配表数据
            let arrallo = [];
            this.allocationform.map(item => {
              if (item.id) {
                item.applicanttime = formatDate(item.applicanttime);
                updateDonateorgan(item).then(response => { });
              } else {
                arrallo.push(item);
            // 保存捐献器官移植信息
            this.transplantdata.infoid = this.infoid;
            console.log("transplantdata", this.transplantdata);
            saveDonatecomporgan(this.transplantdata).then(res => {
              if (res == 200) {
                this.$modal.msgSuccess("捐献器官获取信息保存成功!");
              }
            });
            // 保存确认信息
            if (this.accomplishform.dcid) {
              console.log(this.accomplishform);
@@ -2007,6 +2085,7 @@
                this.$modal.msgSuccess("完成登记成功");
              });
            }
            this.Processvalidation();
          }
        });
@@ -2028,60 +2107,191 @@
    },
    // 器官分配栏目控制
    changeorganState(value) {
      let organIndex = this.allocationform.findIndex(
      let selectedIndex = this.organList.organallocated.findIndex(
        item => item == value
      );
      let organIndex = this.allocateddata.findIndex(
        item => item.organno == value
      );
      if (organIndex == -1) {
        //获取器官名称
        let temporganname = "";
        for (let i = 0; i < this.dict.type.sys_Organ.length; i++) {
          if (value == this.dict.type.sys_Organ[i].value) {
            temporganname = this.dict.type.sys_Organ[i].label;
            break;
      console.log("selectedIndex:" + selectedIndex + ",organIndex:" + organIndex);
      if (selectedIndex == -1) {
        //取消选择
        if (organIndex != -1) {
          if (this.allocateddata[organIndex].id > 0) {
            this.$confirm("删除器官分配数据后将不法恢复,您确认删除该条记录吗?", "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            })
              .then(() => {
                this.loading = true;
                delDonateorgan(this.allocateddata[organIndex].id).then(res => {
                  this.allocateddata.splice(organIndex, 1);
                  this.loading = false;
                  this.$modal.msgSuccess("删除成功,如果需要增加该器官,请重新选择器官!");
                });
              })
              .catch(() => {
                this.organList.organallocated.push(value);
              });
          } else {
            //新记录直接删除
            this.allocateddata.splice(organIndex, 1);
          }
        }
        if (temporganname != "") {
          this.allocationform.push({
            organname: temporganname,
            organno: value,
            id: null,
            infoid: this.infoid,
            donorno: this.form.donorno,
            transplanthospitalname: null,
            transplanthospitalno: null,
            organstate: 0
          });
        }
      } else {
        this.$confirm("是否确认删除器官分配记录", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        })
          .then(() => {
            if (organIndex != -1) {
              let tempOrgan = this.allocationform[organIndex];
              console.log(tempOrgan);
              if (tempOrgan.organstate != 1 && tempOrgan.id > 0) {
                this.$modal.msgWarning("只有未分配器官可进行删除!");
                this.organalForm.organname.push(value);
                return;
              }
              if (tempOrgan.id > 0) {
                //查找器官表记录,判断器官状态
                this.loading = true;
                delDonateorgan(tempOrgan.id).then(delLocationRes => {
                  this.loading = false;
                  this.$modal.msgSuccess("删除成功");
                });
              } else {
                this.allocationform.splice(organIndex, 1);
              }
      }
      else {
        //选择新器官
        if (organIndex == -1) {
          //添加器官记录
          let temporganname = "";
          for (let i = 0; i < this.dict.type.sys_Organ.length; i++) {
            if (value == this.dict.type.sys_Organ[i].value) {
              temporganname = this.dict.type.sys_Organ[i].label;
              break;
            }
          })
          .catch(() => { });
          }
          if (temporganname != "") {
            this.allocateddata.push({
              organname: temporganname,
              organno: value,
              id: null,
              infoid: this.infoid,
              donorno: this.form.donorno,
              organstate: 1
            });
          }
        }
        else {
          this.$modal.msgWarning("该器官已经分配,请勿重复选择!");
        }
      }
    },
    // 器官获取选择控制
    changeorganprocured(value) {
      let selectedIndex = this.organList.organprocured.findIndex(
        item => item == value
      );
      let organIndex = this.procureddata.findIndex(
        item => item.organno == value
      );
      console.log("selectedIndex:" + selectedIndex + ",organIndex:" + organIndex);
      if (selectedIndex == -1) {
        //取消选择
        if (organIndex != -1) {
          if (this.procureddata[organIndex].id > 0) {
            this.$confirm("删除器官分配数据后将不法恢复,您确认删除该条记录吗?", "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            })
              .then(() => {
                this.loading = true;
                delDonationwitnessorgan(this.procureddata[organIndex].id).then(res => {
                  this.procureddata.splice(organIndex, 1);
                  this.loading = false;
                  this.$modal.msgSuccess("删除成功,如果需要增加该器官,请重新选择器官!");
                });
              })
              .catch(() => {
                this.organList.organprocured.push(value);
              });
          } else {
            //新记录直接删除
            this.procureddata.splice(organIndex, 1);
          }
        }
      }
      else {
        //选择新器官
        if (organIndex == -1) {
          //添加器官记录
          let temporganname = "";
          for (let i = 0; i < this.dict.type.sys_Organ.length; i++) {
            if (value == this.dict.type.sys_Organ[i].value) {
              temporganname = this.dict.type.sys_Organ[i].label;
              break;
            }
          }
          if (temporganname != "") {
            this.procureddata.push({
              organname: temporganname,
              organno: value,
              id: null,
              infoid: this.infoid,
              donorno: this.form.donorno,
              organstate: "1"
            });
          }
        }
        else {
          this.$modal.msgWarning("该器官已经分配,请勿重复选择!");
        }
      }
    },
    // 器官移植选择控制
    changeorgantransplant(value) {
      let selectedIndex = this.organList.organtransplant.findIndex(
        item => item == value
      );
      let organIndex = this.transplantdata.findIndex(
        item => item.organno == value
      );
      console.log("selectedIndex:" + selectedIndex + ",organIndex:" + organIndex);
      if (selectedIndex == -1) {
        //取消选择
        if (organIndex != -1) {
          if (this.transplantdata[organIndex].id > 0) {
            this.$confirm("删除器官数据后将不法恢复,您确认删除该条记录吗?", "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning"
            })
              .then(() => {
                this.loading = true;
                delDonatecomporgan(this.transplantdata[organIndex].id).then(res => {
                  this.transplantdata.splice(organIndex, 1);
                  this.loading = false;
                  this.$modal.msgSuccess("删除成功,如果需要增加该器官,请重新选择器官!");
                });
              })
              .catch(() => {
                this.organList.organtransplant.push(value);
              });
          } else {
            //新记录直接删除
            this.transplantdata.splice(organIndex, 1);
          }
        }
      }
      else {
        //选择新器官
        if (organIndex == -1) {
          //添加器官记录
          let temporganname = "";
          for (let i = 0; i < this.dict.type.sys_Organ.length; i++) {
            if (value == this.dict.type.sys_Organ[i].value) {
              temporganname = this.dict.type.sys_Organ[i].label;
              break;
            }
          }
          if (temporganname != "") {
            this.transplantdata.push({
              organname: temporganname,
              organno: value,
              id: null,
              infoid: this.infoid,
              donorno: this.form.donorno,
              organstate: 1
            });
          }
        }
        else {
          this.$modal.msgWarning("该器官已经选择,请勿重复选择!");
        }
      }
    },
    // 前进步骤
    makeastepforward() {
      console.log(this.actives);
@@ -2314,8 +2524,52 @@
    },
    filterTag(value, row) {
      return row.tag === value;
    }
    },
    //身份证校验赋值
    updateMessage() {
      try {
        const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
        if (reg.test(this.form.idcardno)) {
          // 身份证号码是否合法
          var org_birthday = this.form.idcardno.substring(6, 14);
          var org_gender = this.form.idcardno.substring(16, 17);
          var sex = org_gender % 2 == 1 ? 1 : 2;
          var birthday =
            org_birthday.substring(0, 4) +
            "-" +
            org_birthday.substring(4, 6) +
            "-" +
            org_birthday.substring(6, 8);
          var birthdays = new Date(birthday.replace(/-/g, "/"));
          let d = new Date();
          let age =
            d.getFullYear() -
            birthdays.getFullYear() -
            (d.getMonth() < birthdays.getMonth() ||
              (d.getMonth() == birthdays.getMonth() &&
                d.getDate() < birthdays.getDate())
              ? 1
              : 0);
          // 赋值给表格
          this.form.sex = sex;
          this.form.birthday = birthday;
          this.form.age = age;
        } else {
        }
      } catch { }
    },
    //重新分配器官
    redistribution(row) {
      console.log("redistribution", row);
      row.reallocationreason = "已重新分配,原分配信息(姓名:" + row.name + "、系统编号:" + row.caseno + "、接收时间:" + row.applicanttime + ")"
      row.name = null;
      row.caseno = null;
      row.applicanttime = null;
    },
  },
  dicts: [
    "sys_nation",
    "sys_occupation",