app-cas-details-editer.component.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. <div *nzModalTitle> {{ isEdit ? ('mxk.text.edit' | i18n) : ('mxk.text.add' | i18n) }} </div>
  2. <div>
  3. <form nz-form [formGroup]="formGroup" (ngSubmit)="onSubmit($event)" se-container="1">
  4. <nz-tabset style="width: 100%">
  5. <nz-tab nzTitle="{{ 'mxk.apps.tab.basic' | i18n }}">
  6. <div nz-row>
  7. <nz-form-item>
  8. <nz-form-item style="width: 100%">
  9. <nz-form-label [nzMd]="8" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
  10. <nz-form-control [nzMd]="16" nzErrorTip="The input is not valid id!">
  11. <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
  12. </nz-form-control>
  13. </nz-form-item>
  14. <nz-form-item style="width: 100%">
  15. <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }} </nz-form-label>
  16. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid secret!">
  17. <nz-input-group nzSearch [nzAddOnAfter]="suffixPasswordButton">
  18. <input
  19. [(ngModel)]="form.model.secret"
  20. readonly
  21. [ngModelOptions]="{ standalone: true }"
  22. nz-input
  23. name="secret"
  24. id="secret"
  25. />
  26. </nz-input-group>
  27. <ng-template #suffixPasswordButton>
  28. <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate' | i18n }}</button>
  29. </ng-template>
  30. </nz-form-control>
  31. </nz-form-item>
  32. </nz-form-item>
  33. <nz-form-item>
  34. <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="icon">{{ 'mxk.apps.icon' | i18n }}</nz-form-label>
  35. <div nz-col class="clearfix" nzSm="16" nzXs="24">
  36. <nz-upload
  37. nzAction="/file/upload/"
  38. nzListType="picture-card"
  39. [(nzFileList)]="fileList"
  40. nzName="uploadFile"
  41. [nzShowButton]="fileList.length < 1"
  42. [nzShowUploadList]="{ showPreviewIcon: true, showRemoveIcon: true }"
  43. [nzPreview]="handlePreview"
  44. (nzChange)="uploadImageChange($event)"
  45. >
  46. <div>
  47. <i nz-icon nzType="plus"></i>
  48. <div style="margin-top: 8px">Upload</div>
  49. </div>
  50. </nz-upload>
  51. <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible = false">
  52. <ng-template #modalContent>
  53. <img [src]="previewImage" [ngStyle]="{ width: '100%' }" />
  54. </ng-template>
  55. </nz-modal>
  56. </div>
  57. <nz-form-control
  58. style="display: none"
  59. [nzSm]="16"
  60. [nzMd]="16"
  61. [nzXs]="36"
  62. [nzXl]="48"
  63. nzErrorTip="The input is not valid icon!"
  64. >
  65. <input
  66. [(ngModel)]="form.model.iconId"
  67. disabled="true"
  68. [ngModelOptions]="{ standalone: true }"
  69. nz-input
  70. name="icon"
  71. id="icon"
  72. />
  73. </nz-form-control>
  74. </nz-form-item>
  75. </div>
  76. <div nz-row>
  77. <nz-form-item>
  78. <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }} </nz-form-label>
  79. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
  80. <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName" id="appName" />
  81. </nz-form-control>
  82. </nz-form-item>
  83. <nz-form-item>
  84. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="frequently">{{ 'mxk.apps.frequently' | i18n }}</nz-form-label>
  85. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid frequently!">
  86. <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
  87. <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
  88. <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
  89. </nz-radio-group>
  90. </nz-form-control>
  91. </nz-form-item>
  92. </div>
  93. <div nz-row>
  94. <nz-form-item>
  95. <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }} </nz-form-label>
  96. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid protocol!">
  97. <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol" id="protocol" />
  98. </nz-form-control>
  99. </nz-form-item>
  100. <nz-form-item>
  101. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="category">{{ 'mxk.apps.category' | i18n }}</nz-form-label>
  102. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid category!">
  103. <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category" id="category">
  104. <nz-option nzValue="none" nzLabel="{{ 'mxk.apps.category.none' | i18n }}"></nz-option>
  105. <nz-option nzValue="1011" nzLabel="{{ 'mxk.apps.category.1011' | i18n }}"></nz-option>
  106. <nz-option nzValue="1012" nzLabel="{{ 'mxk.apps.category.1012' | i18n }}"></nz-option>
  107. <nz-option nzValue="1013" nzLabel="{{ 'mxk.apps.category.1013' | i18n }}"></nz-option>
  108. <nz-option nzValue="1014" nzLabel="{{ 'mxk.apps.category.1014' | i18n }}"></nz-option>
  109. <nz-option nzValue="1015" nzLabel="{{ 'mxk.apps.category.1015' | i18n }}"></nz-option>
  110. <nz-option nzValue="1016" nzLabel="{{ 'mxk.apps.category.1016' | i18n }}"></nz-option>
  111. <nz-option nzValue="1017" nzLabel="{{ 'mxk.apps.category.1017' | i18n }}"></nz-option>
  112. <nz-option nzValue="1111" nzLabel="{{ 'mxk.apps.category.1111' | i18n }}"></nz-option>
  113. <nz-option nzValue="1112" nzLabel="{{ 'mxk.apps.category.1112' | i18n }}"></nz-option>
  114. <nz-option nzValue="1113" nzLabel="{{ 'mxk.apps.category.1113' | i18n }}"></nz-option>
  115. <nz-option nzValue="1114" nzLabel="{{ 'mxk.apps.category.1114' | i18n }}"></nz-option>
  116. <nz-option nzValue="1211" nzLabel="{{ 'mxk.apps.category.1211' | i18n }}"></nz-option>
  117. <nz-option nzValue="1212" nzLabel="{{ 'mxk.apps.category.1212' | i18n }}"></nz-option>
  118. <nz-option nzValue="1213" nzLabel="{{ 'mxk.apps.category.1213' | i18n }}"></nz-option>
  119. <nz-option nzValue="1214" nzLabel="{{ 'mxk.apps.category.1214' | i18n }}"></nz-option>
  120. <nz-option nzValue="1215" nzLabel="{{ 'mxk.apps.category.1215' | i18n }}"></nz-option>
  121. <nz-option nzValue="1311" nzLabel="{{ 'mxk.apps.category.1311' | i18n }}"></nz-option>
  122. <nz-option nzValue="1411" nzLabel="{{ 'mxk.apps.category.1411' | i18n }}"></nz-option>
  123. <nz-option nzValue="1511" nzLabel="{{ 'mxk.apps.category.1511' | i18n }}"></nz-option>
  124. <nz-option nzValue="1512" nzLabel="{{ 'mxk.apps.category.1512' | i18n }}"></nz-option>
  125. <nz-option nzValue="1611" nzLabel="{{ 'mxk.apps.category.1611' | i18n }}"></nz-option>
  126. <nz-option nzValue="1711" nzLabel="{{ 'mxk.apps.category.1711' | i18n }}"></nz-option>
  127. <nz-option nzValue="1712" nzLabel="{{ 'mxk.apps.category.1712' | i18n }}"></nz-option>
  128. <nz-option nzValue="1811" nzLabel="{{ 'mxk.apps.category.1811' | i18n }}"></nz-option>
  129. <nz-option nzValue="1812" nzLabel="{{ 'mxk.apps.category.1812' | i18n }}"></nz-option>
  130. <nz-option nzValue="1911" nzLabel="{{ 'mxk.apps.category.1911' | i18n }}"></nz-option>
  131. <nz-option nzValue="1912" nzLabel="{{ 'mxk.apps.category.1912' | i18n }}"></nz-option>
  132. </nz-select>
  133. </nz-form-control>
  134. </nz-form-item>
  135. </div>
  136. <div nz-row>
  137. <nz-form-item style="width: 100%">
  138. <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }} </nz-form-label>
  139. <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid loginUrl!">
  140. <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl" id="loginUrl" />
  141. </nz-form-control>
  142. </nz-form-item>
  143. </div>
  144. <div nz-row>
  145. <nz-form-item>
  146. <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="status">{{ 'mxk.text.status' | i18n }} </nz-form-label>
  147. <nz-form-control [nzSm]="14" [nzXs]="24" nzErrorTip="The input is not valid status!">
  148. <nz-switch
  149. [(ngModel)]="form.model.switch_status"
  150. [ngModelOptions]="{ standalone: true }"
  151. name="status"
  152. [nzCheckedChildren]="statuscheckedTemplate"
  153. [nzUnCheckedChildren]="statusunCheckedTemplate"
  154. ></nz-switch>
  155. <ng-template #statuscheckedTemplate><i nz-icon nzType="check"></i></ng-template>
  156. <ng-template #statusunCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
  157. </nz-form-control>
  158. </nz-form-item>
  159. <nz-form-item>
  160. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isExtendAttr">{{ 'mxk.apps.isExtendAttr' | i18n }} </nz-form-label>
  161. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isExtendAttr!">
  162. <nz-radio-group [(ngModel)]="form.model.isExtendAttr" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
  163. <label nz-radio-button nzValue="0">{{ 'mxk.text.no' | i18n }}</label>
  164. <label nz-radio-button nzValue="1">{{ 'mxk.text.yes' | i18n }}</label>
  165. </nz-radio-group>
  166. </nz-form-control>
  167. </nz-form-item>
  168. </div>
  169. </nz-tab>
  170. <nz-tab nzTitle="{{ 'mxk.apps.cas.tab' | i18n }}">
  171. <div nz-row>
  172. <nz-form-item style="width: 100%">
  173. <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="service">{{ 'mxk.apps.cas.service' | i18n }} </nz-form-label>
  174. <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid service!">
  175. <input [(ngModel)]="form.model.service" [ngModelOptions]="{ standalone: true }" nz-input name="service" id="service" />
  176. </nz-form-control>
  177. </nz-form-item>
  178. </div>
  179. <div nz-row>
  180. <nz-form-item style="width: 100%">
  181. <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="callbackUrl">{{ 'mxk.apps.cas.callbackUrl' | i18n }} </nz-form-label>
  182. <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid callbackUrl!">
  183. <input
  184. [(ngModel)]="form.model.callbackUrl"
  185. [ngModelOptions]="{ standalone: true }"
  186. nz-input
  187. name="callbackUrl"
  188. id="callbackUrl"
  189. />
  190. </nz-form-control>
  191. </nz-form-item>
  192. </div>
  193. <div nz-row>
  194. <nz-form-item>
  195. <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="casUser">{{ 'mxk.apps.cas.casUser' | i18n }} </nz-form-label>
  196. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid casUser!">
  197. <nz-select [(ngModel)]="form.model.casUser" [ngModelOptions]="{ standalone: true }" name="category" id="category">
  198. <nz-option nzValue="username" nzLabel="{{ 'mxk.users.username' | i18n }}"></nz-option>
  199. <nz-option nzValue="employeeNumber" nzLabel="{{ 'mxk.users.employeeNumber' | i18n }}"></nz-option>
  200. <nz-option nzValue="email" nzLabel="{{ 'mxk.users.email' | i18n }}"></nz-option>
  201. <nz-option nzValue="mobile" nzLabel="{{ 'mxk.users.mobile' | i18n }}"></nz-option>
  202. <nz-option nzValue="windowsaccount" nzLabel="{{ 'mxk.users.windowsAccount' | i18n }}"></nz-option>
  203. <nz-option nzValue="userId" nzLabel="{{ 'mxk.users.id' | i18n }}"></nz-option>
  204. </nz-select>
  205. </nz-form-control>
  206. </nz-form-item>
  207. <nz-form-item>
  208. <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="expires">{{ 'mxk.apps.cas.expires' | i18n }} </nz-form-label>
  209. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid expires!">
  210. <nz-input-group nzAddOnAfter="{{ 'mxk.text.second' | i18n }}">
  211. <input [(ngModel)]="form.model.expires" [ngModelOptions]="{ standalone: true }" nz-input name="expires" id="expires" />
  212. </nz-input-group>
  213. </nz-form-control>
  214. </nz-form-item>
  215. </div>
  216. </nz-tab>
  217. <nz-tab nzTitle="{{ 'mxk.apps.tab.extra' | i18n }}">
  218. <div nz-row>
  219. <nz-form-item>
  220. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutUrl">{{ 'mxk.apps.logoutUrl' | i18n }}</nz-form-label>
  221. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutUrl!">
  222. <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input name="logoutUrl" id="logoutUrl" />
  223. </nz-form-control>
  224. </nz-form-item>
  225. <nz-form-item>
  226. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutType">{{ 'mxk.apps.logoutType' | i18n }}</nz-form-label>
  227. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutType!">
  228. <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType" id="logoutType">
  229. <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.logoutType.none' | i18n }}"></nz-option>
  230. <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.logoutType.back_channel' | i18n }}"></nz-option>
  231. <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.logoutType.front_channel' | i18n }}"></nz-option>
  232. </nz-select>
  233. </nz-form-control>
  234. </nz-form-item>
  235. </div>
  236. <div nz-row>
  237. <nz-form-item>
  238. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="visible">{{ 'mxk.apps.visible' | i18n }}</nz-form-label>
  239. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid visible!">
  240. <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible" id="visible">
  241. <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.visible.hidden' | i18n }}"></nz-option>
  242. <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.visible.all' | i18n }}"></nz-option>
  243. <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.visible.internet' | i18n }}"></nz-option>
  244. <nz-option nzValue="3" nzLabel="{{ 'mxk.apps.visible.intranet' | i18n }}"></nz-option>
  245. </nz-select>
  246. </nz-form-control>
  247. </nz-form-item>
  248. <nz-form-item>
  249. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="sortIndex">{{ 'mxk.text.sortIndex' | i18n }}</nz-form-label>
  250. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sortIndex!">
  251. <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input name="sortIndex" id="sortIndex" />
  252. </nz-form-control>
  253. </nz-form-item>
  254. </div>
  255. <div nz-row>
  256. <nz-form-item>
  257. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendor">{{ 'mxk.apps.vendor' | i18n }}</nz-form-label>
  258. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendor!">
  259. <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor" id="vendor" />
  260. </nz-form-control>
  261. </nz-form-item>
  262. <nz-form-item>
  263. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendorUrl">{{ 'mxk.apps.vendor.url' | i18n }}</nz-form-label>
  264. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendorUrl!">
  265. <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input name="vendorUrl" id="vendorUrl" />
  266. </nz-form-control>
  267. </nz-form-item>
  268. </div>
  269. <div nz-row>
  270. <nz-form-item>
  271. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isAdapter">{{ 'mxk.apps.isAdapter' | i18n }}</nz-form-label>
  272. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isAdapter!">
  273. <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter" id="isAdapter">
  274. <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.isAdapter.no' | i18n }}"></nz-option>
  275. <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.isAdapter.yes' | i18n }}"></nz-option>
  276. </nz-select>
  277. </nz-form-control>
  278. </nz-form-item>
  279. <nz-form-item>
  280. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="adapterName">{{ 'mxk.apps.adapter' | i18n }}</nz-form-label>
  281. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid adapterName!">
  282. <nz-input-group nzSearch [nzAddOnAfter]="suffixAdapterButton">
  283. <input
  284. [(ngModel)]="form.model.adapterName"
  285. [ngModelOptions]="{ standalone: true }"
  286. nz-input
  287. name="adapterName"
  288. id="adapterName"
  289. />
  290. </nz-input-group>
  291. <ng-template #suffixAdapterButton>
  292. <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' | i18n }}</button>
  293. </ng-template>
  294. <input
  295. type="hidden"
  296. [(ngModel)]="form.model.adapterId"
  297. [ngModelOptions]="{ standalone: true }"
  298. nz-input
  299. name="adapterId"
  300. id="adapterId"
  301. />
  302. <input
  303. type="hidden"
  304. [(ngModel)]="form.model.adapter"
  305. [ngModelOptions]="{ standalone: true }"
  306. nz-input
  307. name="adapter"
  308. id="adapter"
  309. />
  310. </nz-form-control>
  311. </nz-form-item>
  312. </div>
  313. <div nz-row>
  314. <nz-form-item>
  315. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="resourceMgt">{{ 'mxk.apps.resourceMgt' | i18n }}</nz-form-label>
  316. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid resourceMgt!">
  317. <nz-select [(ngModel)]="form.model.resourceMgt" [ngModelOptions]="{ standalone: true }" name="resourceMgt" id="resourceMgt">
  318. <nz-option nzValue="n" nzLabel="{{ 'mxk.text.no' | i18n }}"></nz-option>
  319. <nz-option nzValue="y" nzLabel="{{ 'mxk.text.yes' | i18n }}"></nz-option>
  320. </nz-select>
  321. </nz-form-control>
  322. </nz-form-item>
  323. <nz-form-item>
  324. <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="openapiRight">{{ 'mxk.apps.openapiRight' | i18n }}</nz-form-label>
  325. <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid openapiRight!">
  326. <nz-select
  327. [(ngModel)]="form.model.openapiRight"
  328. [ngModelOptions]="{ standalone: true }"
  329. name="openapiRight"
  330. id="openapiRight"
  331. >
  332. <nz-option nzValue="read" nzLabel="Read"></nz-option>
  333. <nz-option nzValue="write" nzLabel="Write"></nz-option>
  334. </nz-select>
  335. </nz-form-control>
  336. </nz-form-item>
  337. </div>
  338. <div nz-row>
  339. <nz-form-item style="width: 100%">
  340. <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }} </nz-form-label>
  341. <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid description!">
  342. <input
  343. [(ngModel)]="form.model.description"
  344. [ngModelOptions]="{ standalone: true }"
  345. nz-input
  346. name="description"
  347. id="description"
  348. />
  349. </nz-form-control>
  350. </nz-form-item>
  351. </div>
  352. </nz-tab>
  353. <nz-tab nzTitle="{{ 'mxk.apps.tab.custom' | i18n }}" *ngIf="isEdit && form.model.isExtendAttr === '1'">
  354. <button nz-button (click)="addExtraAttrRow($event)" nzType="primary">{{ 'mxk.text.add' | i18n }}</button>
  355. <nz-table #editRowTable nzBordered [nzData]="extraAttrListOfData" nzTableLayout="fixed">
  356. <thead>
  357. <tr>
  358. <th nzWidth="25%">{{ 'mxk.custom.extraAttr.attr' | i18n }}</th>
  359. <th nzWidth="15%">{{ 'mxk.custom.extraAttr.type' | i18n }}</th>
  360. <th nzWidth="40%">{{ 'mxk.custom.extraAttr.value' | i18n }}</th>
  361. <th>{{ 'mxk.text.action' | i18n }}</th>
  362. </tr>
  363. </thead>
  364. <tbody>
  365. <tr *ngFor="let data of editRowTable.data">
  366. <ng-container *ngIf="!extraAttrEditCache[data.id].edit; else editTemplate">
  367. <td>{{ data.attr }}</td>
  368. <td>{{ data.type }}</td>
  369. <td>{{ data.value }}</td>
  370. <td>
  371. <button nz-button type="button" (click)="startExtraAttrEdit(data.id)" style="float: left">{{
  372. 'mxk.text.edit' | i18n
  373. }}</button>
  374. <button nz-button type="button" (click)="deleteExtraAttrRow(data.id)" nzDanger>{{ 'mxk.text.delete' | i18n }}</button>
  375. </td>
  376. </ng-container>
  377. <ng-template #editTemplate>
  378. <td
  379. ><input type="text" nz-input [(ngModel)]="extraAttrEditCache[data.id].data.attr" [ngModelOptions]="{ standalone: true }"
  380. /></td>
  381. <td
  382. ><input type="text" nz-input [(ngModel)]="extraAttrEditCache[data.id].data.type" [ngModelOptions]="{ standalone: true }"
  383. /></td>
  384. <td
  385. ><input type="text" nz-input [(ngModel)]="extraAttrEditCache[data.id].data.value" [ngModelOptions]="{ standalone: true }"
  386. /></td>
  387. <td>
  388. <button nz-button type="button" (click)="saveExtraAttrEdit(data.id)" style="float: left">{{
  389. 'mxk.text.submit' | i18n
  390. }}</button>
  391. </td>
  392. </ng-template>
  393. </tr>
  394. </tbody>
  395. </nz-table>
  396. </nz-tab>
  397. </nz-tabset>
  398. </form>
  399. </div>
  400. <div *nzModalFooter>
  401. <button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
  402. <button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
  403. </div>