textbook-pertain.component.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <div class="entry">
  2. <form nz-form [formGroup]="validateForm" class="login-form" (ngSubmit)="submitForm()">
  3. <div class="first-head">
  4. <div nz-row>
  5. <div nz-col nzSpan="12">
  6. <nz-form-item class="row" style="margin-bottom: 16px">
  7. <nz-form-label class="label" [nzNoColon]="true" [nzSm]="16" [nzXs]="16"
  8. nzRequired>适用专业代码(六位)及名称</nz-form-label>
  9. <nz-form-control class="val" nzErrorTip="适用专业代码(六位)及名称" style="width: 100%">
  10. <nz-select style="width: 80%" nzShowSearch nzAllowClear nzPlaceHolder="填写 6 位专业代码选择"
  11. formControlName="major" (ngModelChange)="changeCode()" (nzOnSearch)="getCode($event)">
  12. @for(major of selectList; track major.code;let index = $index){
  13. <nz-option nzCustomContent [nzValue]="major.code" [nzLabel]="major.name+'-'+major.code">
  14. <div>{{ major.name }}</div>
  15. <div style="font-size: 12px;color: gray;">{{ major.code }}</div>
  16. </nz-option>
  17. }
  18. </nz-select>
  19. </nz-form-control>
  20. </nz-form-item>
  21. <nz-form-item class="row" style="margin-bottom: 16px">
  22. <nz-form-label class="label" [nzNoColon]="true" [nzSm]="8" [nzXs]="8" nzRequired>课程学时</nz-form-label>
  23. <nz-form-control class="val" nzErrorTip="请填写课程学时" style="width: 100%">
  24. <nz-input-group style="width: 80%" [nzSuffix]="suffixTemplateInfo">
  25. <input type="number" formControlName="period" nz-input placeholder="填写学时数" />
  26. </nz-input-group>
  27. <ng-template #suffixTemplateInfo> 学时 </ng-template>
  28. </nz-form-control>
  29. </nz-form-item>
  30. </div>
  31. <div nz-col nzSpan="12">
  32. <nz-form-item class="row" style="margin-bottom: 16px">
  33. <nz-form-label class="label" [nzNoColon]="true" [nzSm]="6" [nzXs]="6" nzRequired>适用课程</nz-form-label>
  34. <nz-form-control class="val" nzErrorTip="请填写适用课程" style="width: 100%">
  35. <input type="text" formControlName="lessons" nz-input placeholder="填写适用课程名称,多门课程名称使用“;”分隔" />
  36. </nz-form-control>
  37. </nz-form-item>
  38. <nz-form-item class="row" style="margin-bottom: 16px">
  39. <nz-form-label class="label" [nzNoColon]="true" [nzSm]="6" [nzXs]="6" nzRequired>适用课程性质</nz-form-label>
  40. <nz-form-control class="val" nzErrorTip="请选择适用课程性质" style="width: 100%">
  41. <nz-checkbox-wrapper style="width: 100%;">
  42. <div nz-row>
  43. @for (checkItem of checkOptionsOne; track $index) {
  44. <label [ngModelOptions]="{standalone: true}" nz-checkbox [nzValue]="checkItem.value" [(ngModel)]="checkItem.checked">{{checkItem.value}}</label>
  45. }
  46. </div>
  47. </nz-checkbox-wrapper>
  48. <nz-radio-group style="margin: 10px 0;" [ngModelOptions]="{standalone: true}" [(ngModel)]="checkTwo" (ngModelChange)="changeRadio()">
  49. @for (checkItem of checkOptionsTwo; track $index) {
  50. <label nz-radio [nzValue]="checkItem.value">{{checkItem.label}}</label>
  51. }
  52. </nz-radio-group>
  53. <nz-checkbox-wrapper style="width: 100%;">
  54. <div nz-row>
  55. @for (checkItem of checkOptionsThree; track $index) {
  56. <label [ngModelOptions]="{standalone: true}" nz-checkbox [nzValue]="checkItem.value" [(ngModel)]="checkItem.checked">{{checkItem.value}}</label>
  57. }
  58. (如不涉及,此行可不选)
  59. </div>
  60. </nz-checkbox-wrapper>
  61. </nz-form-control>
  62. </nz-form-item>
  63. <!-- <nz-form-item class="row" style="margin-bottom: 16px">
  64. <nz-form-label class="label" [nzNoColon]="true" [nzSm]="6" [nzXs]="6" nzRequired>适用课程性质</nz-form-label>
  65. <nz-form-control class="val" nzErrorTip="请选择适用课程性质" style="width: 100%">
  66. <nz-checkbox-group [(ngModel)]="checkOptionsOne" formControlName="characteristic"></nz-checkbox-group>
  67. <nz-checkbox-group [(ngModel)]="checkOptionsOne" formControlName="characteristic"></nz-checkbox-group>
  68. </nz-form-control>
  69. </nz-form-item> -->
  70. </div>
  71. </div>
  72. </div>
  73. <div class="author-content">
  74. <div class="nav">作者信息</div>
  75. <nz-form-label class="title" [nzNoColon]="true" [nzSm]="24" [nzXs]="24" nzRequired>
  76. <span style="font-size: 16px">
  77. 作者(含主编,不超过 6 人,教材中明确出现姓名)
  78. </span>
  79. </nz-form-label>
  80. <nz-table #basicTable [nzData]="authorList" [nzScroll]="{ x: (maxWidth || '1200') + 'px' }">
  81. <thead>
  82. <tr>
  83. <th nzWidth="80px" nzLeft nzAlign="right">序号</th>
  84. <th nzWidth="160px" nzLeft>姓名</th>
  85. <th nzWidth="160px">单位</th>
  86. <th nzWidth="160px">出生年月</th>
  87. <th nzWidth="160px">国籍</th>
  88. <th nzWidth="160px">职务</th>
  89. <th nzWidth="160px">职称</th>
  90. <th nzWidth="300px">手机号码</th>
  91. <th nzWidth="160px">电子邮箱</th>
  92. <th nzWidth="160px">分工</th>
  93. <th nzWidth="120px" nzRight>
  94. 作者诚信承诺签名
  95. <span style="color: red;">*</span>
  96. </th>
  97. <th nzWidth="120px" nzRight>
  98. 作者政治审查表
  99. <span style="color: red;">*</span>
  100. </th>
  101. <th nzWidth="100px" nzRight>操作</th>
  102. </tr>
  103. </thead>
  104. <tbody>
  105. @for (data of authorList; track data.mobile;let index = $index) {
  106. <tr>
  107. <td nzLeft nzAlign="right">{{ index + 1 }}</td>
  108. <td nzLeft>
  109. <input nz-input placeholder="请输入作者姓名" [ngModelOptions]="{ standalone: true }" [(ngModel)]="data.name"
  110. nzStatus="" />
  111. </td>
  112. <td>
  113. <input nz-input placeholder="请输入作者单位" [ngModelOptions]="{ standalone: true }" [(ngModel)]="data.unit"
  114. nzStatus="" />
  115. </td>
  116. <td>
  117. <nz-date-picker nzMode="month" [ngModelOptions]="{ standalone: true }"
  118. [(ngModel)]="data.birth"></nz-date-picker>
  119. </td>
  120. <td>
  121. <input nz-input placeholder="请输入作者国籍" [ngModelOptions]="{ standalone: true }"
  122. [(ngModel)]="data.nationality" nzStatus="" />
  123. </td>
  124. <td>
  125. <input nz-input placeholder="请输入作者职务" [ngModelOptions]="{ standalone: true }" [(ngModel)]="data.job"
  126. nzStatus="" />
  127. </td>
  128. <td>
  129. <input nz-input placeholder="请输入作者职称" [ngModelOptions]="{ standalone: true }" [(ngModel)]="data.title"
  130. nzStatus="" />
  131. </td>
  132. <td>
  133. <nz-input-group nzCompact>
  134. <nz-select style="width: 90px;" [ngModelOptions]="{ standalone: true }" [ngModel]="'+86'">
  135. <nz-option [nzLabel]="'+0000'" [nzValue]="'+0000'"></nz-option>
  136. <nz-option [nzLabel]="'+86'" [nzValue]="'+86'"></nz-option>
  137. </nz-select>
  138. <input type="number" nz-input placeholder="请输入作者手机号码" [ngModelOptions]="{ standalone: true }"
  139. [(ngModel)]="data.mobile" nzStatus="" style="width: 160px;"/>
  140. </nz-input-group>
  141. </td>
  142. <td>
  143. <input nz-input placeholder="请输入作者邮箱" [ngModelOptions]="{ standalone: true }" [(ngModel)]="data.email"
  144. nzStatus="" />
  145. </td>
  146. <td>
  147. <nz-select style="width: 80%" nzShowSearch nzAllowClear nzPlaceHolder="请选择分工"
  148. [ngModelOptions]="{ standalone: true }" [(ngModel)]="data.work">
  149. @for(work of workOptions; track work){
  150. <nz-option nzCustomContent [nzValue]="work" [nzLabel]="work">{{
  151. work
  152. }}</nz-option>
  153. }
  154. </nz-select>
  155. </td>
  156. <td nzRight>
  157. @if (data.signature) {
  158. <a style="color: #3e49b3;" (click)="openFile(data.signature)">签名文件</a>
  159. }
  160. <app-comp-upload (change)="upload($event, 'signature',index)"></app-comp-upload>
  161. </td>
  162. <td nzRight>
  163. @if (data.examine) {
  164. <a style="color: #3e49b3;" (click)="openFile(data.examine)">政治审查表 </a>
  165. }
  166. <app-comp-upload (change)="upload($event, 'examine',index)"></app-comp-upload>
  167. </td>
  168. <td nzRight>
  169. <a (click)="onPush('authorList', index)"><span nz-icon style="font-size: 20px; margin-right: 10px"
  170. nzType="plus-circle" nzTheme="outline"></span></a>
  171. <a (click)="onDel('authorList', index)"><span nz-icon style="font-size: 20px" nzType="delete"
  172. nzTheme="outline"></span></a>
  173. </td>
  174. </tr>
  175. }
  176. </tbody>
  177. </nz-table>
  178. <p>输入诚信承诺:本人自愿参加此次申报,已认真填写并检查以上材料,保证内容真实。</p>
  179. <input formControlName="accept" nz-input placeholder="请输入承诺内容" />
  180. </div>
  181. <div class="author-content">
  182. <div class="nav">第一主编(作者)情况</div>
  183. <nz-form-item class="row" style="margin-bottom: 16px">
  184. <nz-form-label class="title" [nzNoColon]="true" [nzSm]="24" [nzXs]="24" nzRequired>
  185. <span style="font-size: 16px"> 相关教学经历 </span>
  186. </nz-form-label>
  187. <nz-form-control class="val" nzErrorTip="请输入第一主编(作者)承担学校教学任务、开展教学研究情况、教材编写情况以及取得的教学成果" style="width: 100%">
  188. <nz-textarea-count [nzMaxCharacterCount]="500">
  189. <textarea rows="4" maxlength="500" formControlName="authorDetails" placeholder="请输入第一主编(作者)承担学校教学任务、开展教学研究情况、教材编写情况以及取得的教学成果"
  190. nz-input></textarea>
  191. </nz-textarea-count>
  192. </nz-form-control>
  193. </nz-form-item>
  194. </div>
  195. <div class="author-content">
  196. <nz-form-label class="title" [nzNoColon]="true" [nzSm]="24" [nzXs]="24" nzRequired>
  197. <span style="font-size: 16px">
  198. 相关科学研究项目、成果或论文专著(限5项)
  199. </span>
  200. </nz-form-label>
  201. <nz-table #basicTable [nzData]="achievementOptions" [nzScroll]="{ x: (maxWidth || '1200') + 'px' }">
  202. <thead>
  203. <tr>
  204. <th nzWidth="80px" nzLeft nzAlign="right">序号</th>
  205. <th nzWidth="220px" nzLeft>名称</th>
  206. <th nzWidth="180px">来源/出版单位</th>
  207. <th nzWidth="120px">时间</th>
  208. <th nzWidth="80px" nzRight>操作</th>
  209. </tr>
  210. </thead>
  211. <tbody>
  212. @for (data of achievementOptions; track data.name;let index = $index)
  213. {
  214. <tr>
  215. <td nzLeft nzAlign="right">{{ index + 1 }}</td>
  216. <td nzLeft>
  217. <input nz-input placeholder="请输入项目/成果/论文名称" [ngModelOptions]="{ standalone: true }"
  218. [(ngModel)]="data.name" nzStatus="" />
  219. </td>
  220. <td>
  221. <input nz-input placeholder="请输入单位名称" [ngModelOptions]="{ standalone: true }" [(ngModel)]="data.unit"
  222. nzStatus="" />
  223. </td>
  224. <td>
  225. <nz-date-picker nzMode="month" [ngModelOptions]="{ standalone: true }"
  226. [(ngModel)]="data.date"></nz-date-picker>
  227. </td>
  228. <td nzRight>
  229. <a (click)="onPush('achievementOptions', index)"><span nz-icon style="font-size: 20px; margin-right: 10px"
  230. nzType="plus-circle" nzTheme="outline"></span></a>
  231. <a (click)="onDel('achievementOptions', index)"><span nz-icon style="font-size: 20px" nzType="delete"
  232. nzTheme="outline"></span></a>
  233. </td>
  234. </tr>
  235. }
  236. </tbody>
  237. </nz-table>
  238. </div>
  239. </form>
  240. </div>
  241. <div style="width: 100%;display: flex;justify-content: space-between;padding: 30px 0 0;">
  242. <a (click)="downloadFile()">
  243. <span nz-icon nzType="download" nzTheme="outline"></span>
  244. 下载本页所有附件模板
  245. </a>
  246. <div class="footer">
  247. <div>
  248. <button nz-button nzType="default" style="margin-right: 20px" (click)="submitForm('save')">
  249. 保存本页
  250. </button>
  251. <button nz-button nzType="default" style="margin-right: 20px" (click)="submitForm('pre')">
  252. 上一页
  253. </button>
  254. <button nz-button nzType="primary" style="background: #3e49b3; border: 1px #3e49b3" (click)="submitForm('next')">
  255. 下一页
  256. </button>
  257. </div>
  258. </div>
  259. </div>