AddToken.vue 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <!-- 添加常见科室症状 -->
  2. <template>
  3. <div class="AddTokenWrapper">
  4. <crumbs
  5. :title="'令牌发放-'+titleText"
  6. class="topBack"
  7. :param="$route.params"
  8. linkTo="TokenControl"
  9. ></crumbs>
  10. <el-form ref="ruleForm" class="addDepartForm" label-width="160px">
  11. <el-form-item class="addDepartFormItem isRequired" label="服务器秘钥:">
  12. <!-- <input class="searchInput" type="text" v-model = "equipNum"> -->
  13. <el-input
  14. type="textarea"
  15. :autosize ="{minRows: 2}"
  16. placeholder="请输入内容"
  17. @blur="tokenAnalysis"
  18. v-model.trim="equipNum">
  19. </el-input>
  20. <!-- <el-button
  21. type="primary"
  22. class="analysis"
  23. @click="tokenAnalysis"
  24. >解析</el-button> -->
  25. </el-form-item>
  26. <el-form-item class="isRequired" label="服务商:">
  27. <el-input v-model.trim="server" placeholder="请输服务商"></el-input>
  28. </el-form-item>
  29. <el-form-item class="isRequired" label="医院:" >
  30. <el-input v-model.trim="hospital" placeholder="请输医院"></el-input>
  31. </el-form-item>
  32. <el-form-item class="isRequired" label="cpu:" >
  33. {{this.cpu}}
  34. </el-form-item>
  35. <el-form-item label="ip:">
  36. {{this.ip}}
  37. </el-form-item>
  38. <el-form-item label="主板:">
  39. {{this.mainboard}}
  40. </el-form-item>
  41. <el-form-item label="硬盘:">
  42. {{this.disk}}
  43. </el-form-item>
  44. <el-form-item class="isRequired" label="使用天数(天):" >
  45. <el-input v-model.trim="remainDay" onkeyup="value=value.replace(/[^\d]/g,'')" placeholder="请输入使用天数" type='text' min = '0'></el-input>
  46. </el-form-item>
  47. <el-form-item class="isRequired" label="有效时间(分钟):" >
  48. <el-input v-model.trim="validTime" onkeyup="value=value.replace(/[^\d]/g,'')" placeholder="请输入有效时间" type='text' min = '0'></el-input>
  49. </el-form-item>
  50. <el-form-item label="登录Key:" v-if="isEdit" >
  51. {{this.loginKey}}
  52. </el-form-item>
  53. <el-form-item label="备注:">
  54. <el-input v-model.trim="remark"
  55. type="textarea"
  56. :autosize ="{minRows: 2}"
  57. placeholder="请输备注"></el-input>
  58. </el-form-item>
  59. </el-form>
  60. <div class="btn">
  61. <el-button
  62. type="primary"
  63. :disabled = 'saveDisable'
  64. @click="submitForm"
  65. >确 定</el-button>
  66. </div>
  67. </div>
  68. </template>
  69. <script>
  70. import api from '@api/safeControl.js';
  71. export default {
  72. name: 'AddToken',
  73. data() {
  74. return{
  75. titleText: '添加令牌',
  76. modifier: '', //操作人
  77. id: '',
  78. equipNum:'',
  79. remainDay: '',
  80. remark: '',
  81. server: '',
  82. hospital: '',
  83. cpu: '',
  84. mainboard: '',
  85. validTime: 30,
  86. disk: '',
  87. ip: '',
  88. loginKey: '',
  89. isEdit: false,
  90. saveDisable: false
  91. }
  92. },
  93. created(){
  94. const { isEdit, data } = this.$route.params;
  95. const userLoginDTO = JSON.parse(localStorage.getItem('userLoginDTO'))
  96. this.modifier = userLoginDTO && userLoginDTO.linkman
  97. if(isEdit) {
  98. if(isEdit) {
  99. this.isEdit = isEdit;
  100. this.titleText = '修改令牌';
  101. this.id = data.id
  102. this.equipNum = data.content
  103. this.remainDay = data.remainDay
  104. this.remark = data.remark
  105. this.server = data.server
  106. this.hospital = data.hospital
  107. this.cpu = data.cpu
  108. this.mainboard = data.mainboard
  109. this.validTime = data.validTime
  110. this.disk = data.disk
  111. this.ip = data.ip
  112. this.loginKey = data.loginKey
  113. }
  114. } else {
  115. }
  116. },
  117. watch: {
  118. },
  119. methods: {
  120. back(){
  121. this.$router.go(-1);
  122. },
  123. submitForm() {
  124. if(!this.equipNum || !this.hospital || !this.server || !this.cpu || !this.remainDay || !this.validTime) {
  125. this.warning('请输入必填项!')
  126. return
  127. }
  128. this.showDelDialog()
  129. },
  130. tokenAnalysis() {
  131. const param = {
  132. content: this.equipNum
  133. }
  134. api.tokenAnalysis(param).then(res =>{
  135. if(res.data.code == '0') {
  136. const data = res.data.data
  137. this.mainboard = data['server.mainboard']
  138. this.cpu = data['server.cpu']
  139. this.disk = data['server.disk']
  140. }
  141. })
  142. },
  143. showDelDialog() {
  144. this.showConfirmDialog('是否生成该令牌?', () => {
  145. const param = {
  146. id: this.id,
  147. creator: this.modifier,
  148. server: this.server,
  149. hospital: this.hospital,
  150. cpu: this.cpu,
  151. remainDay: this.remainDay,
  152. mainboard: this.mainboard,
  153. disk: this.disk,
  154. ip: this.ip,
  155. remark: this.remark,
  156. content: this.equipNum,
  157. validTime: this.validTime
  158. }
  159. if(this.id) {
  160. param.loginKey = this.loginKey
  161. }
  162. this.saveDisable = true //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
  163. api.tokenSaveOrUpdate(param).then((res) => {
  164. if (res.data.code === '0') {
  165. this.warning(res.data.msg || '生成成功', 'success','1000')
  166. setTimeout(() => {
  167. //返回带搜索条件的首页
  168. this.$router.push({
  169. name:'TokenControl',
  170. params: Object.assign({}, this.$route.params, {currentPage: 1})
  171. })
  172. }, 1000);
  173. } else {
  174. this.warning(res.data.msg)
  175. }
  176. this.saveDisable = false
  177. }).catch((err) => {
  178. this.warning(err);
  179. })
  180. });
  181. },
  182. showConfirmDialog(msg, resolve) {
  183. this.$alert(msg, '提示', {
  184. confirmButtonText: '确定',
  185. type: 'warning'
  186. }).then(() => {
  187. resolve();
  188. }).catch(() => {});
  189. },
  190. warning(msg, type,time) {
  191. this.$message({
  192. showClose: true,
  193. message: msg,
  194. type: type || 'warning',
  195. duration:time || '3000'
  196. })
  197. },
  198. handleInp(e){ //分组不能输入负数
  199. const value = e;
  200. this.remainDay = value.replace(/\./g,'');
  201. console.log(this.remainDay)
  202. // e = value.replace(/[^\d]/g,'');
  203. // this.remainDay = value.replace(/[^\d]/g,'');
  204. }
  205. }
  206. }
  207. </script>
  208. <style lang="less">
  209. @import '../../less/common.less';
  210. .AddTokenWrapper {
  211. color: #606266;
  212. .topBack {
  213. top: 0;
  214. }
  215. .analysis{
  216. margin-top: 20px;
  217. }
  218. .searchInput, .searchName {
  219. display: inline-block;
  220. height: 32px;
  221. line-height: 32px;
  222. border: 1px solid #a9a9a9;
  223. margin: 0px 0 0 0;
  224. padding: 0 5px;
  225. float: left;
  226. margin-top: 4px;
  227. }
  228. .isRequired .el-form-item__label::before {
  229. content: '*';
  230. color: red;
  231. }
  232. .searchName {
  233. border-left: none;
  234. cursor: pointer;
  235. font-size: 16px;
  236. padding: 0 14px;
  237. }
  238. .addDepartForm {
  239. position: relative;
  240. background-color: #fff;
  241. padding: 20px;
  242. margin: 70px 20px 0px 20px;
  243. border-bottom: 1px solid #c0c4cc;
  244. }
  245. .addDepartFormItem {
  246. position: relative;
  247. }
  248. .symptomList {
  249. background-color: #fff;
  250. padding: 20px;
  251. margin: 0px 20px 0px 20px;
  252. min-height: 400px;
  253. }
  254. .btn {
  255. position: relative;
  256. background-color: #fff;
  257. margin: 0px 20px;
  258. height: 40px;
  259. padding: 20px;
  260. .el-button {
  261. position: absolute;
  262. right: 20px;
  263. }
  264. }
  265. .selectDepart {
  266. }
  267. }
  268. </style>