add.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. <template>
  2. <div class="apply_add">
  3. <el-tabs type="border-card" v-model="tabValue" @tab-click="handleClick">
  4. <el-tab-pane label="基本信息" name="first">
  5. <el-form :model="basicForm" :rules="basicRules" ref="basic" label-width="170px">
  6. <el-row :gutter="20">
  7. <el-col :span="8">
  8. <el-form-item label="单据编码" prop="code">
  9. <el-input disabled v-model="basicForm.code"></el-input>
  10. </el-form-item>
  11. </el-col>
  12. <el-col :span="8">
  13. <el-form-item label="所属组织" prop="orgId">
  14. <el-input disabled v-model="basicForm.orgId"></el-input>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="8">
  18. <el-form-item label="物料编码" prop="materialCode">
  19. <el-input readonly :disabled="disable" v-model="basicForm.materialCode">
  20. <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test01"></el-button>
  21. </el-input>
  22. </el-form-item>
  23. </el-col>
  24. </el-row>
  25. <el-row :gutter="20">
  26. <el-col :span="8">
  27. <el-form-item label="物料名称" prop="materialName">
  28. <el-input :disabled="disable" v-model="basicForm.materialName"></el-input>
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="8">
  32. <el-form-item label="医药物料" prop="medicineMaterial">
  33. <el-select v-model="basicForm.medicineMaterial" placeholder="医药物料" clearable :disabled="disable"
  34. @change="controlMedic">
  35. <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/>
  36. </el-select>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="8">
  40. <el-form-item label="物料分类" prop="materialClassifyId">
  41. <el-input readonly :disabled="disable" v-model="basicForm.fourClass">
  42. <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="chooseFourClass"></el-button>
  43. </el-input>
  44. <el-input v-show="false" readonly :disabled="disable" v-model="basicForm.materialClassifyId"></el-input>
  45. </el-form-item>
  46. </el-col>
  47. </el-row>
  48. <el-row :gutter="20">
  49. <el-col :span="8">
  50. <el-form-item label="规格" prop="specification">
  51. <el-input :disabled="disable" v-model="basicForm.specification"></el-input>
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="8">
  55. <el-form-item label="型号" prop="model">
  56. <el-input :disabled="disable" v-model="basicForm.model"></el-input>
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="8">
  60. <el-form-item label="生产厂家/代理人" prop="factory">
  61. <el-select ref="factoryOrman" v-model="basicForm.factory" placeholder="生产厂家/代理人" clearable
  62. :disabled="disable" @focus="chooseFactory">
  63. <el-option v-for="item in factoryOptions" :key="item.id" :label="item.name" :value="item.id"/>
  64. </el-select>
  65. <!-- <el-input :disabled="disable" v-model="basicForm.factory">
  66. <el-button :disabled="disable" slot="append" icon="el-icon-more" @click="test02"></el-button>
  67. </el-input> -->
  68. </el-form-item>
  69. </el-col>
  70. </el-row>
  71. <el-row :gutter="20">
  72. <el-col :span="8">
  73. <el-form-item label="注册人/上市许可持有人" prop="registrant">
  74. <el-input :disabled="disable" v-model="basicForm.registrant"></el-input>
  75. </el-form-item>
  76. </el-col>
  77. <el-col :span="8">
  78. <el-form-item label="存储条件" prop="storageConditions">
  79. <el-select v-model="basicForm.storageConditions" placeholder="存储条件" clearable :disabled="disable">
  80. <el-option v-for="dict in dict.type.sys_storage_condition" :key="dict.value" :label="dict.label"
  81. :value="dict.value"/>
  82. </el-select>
  83. </el-form-item>
  84. </el-col>
  85. <el-col :span="8">
  86. <el-form-item label="运输条件" prop="transportCondition">
  87. <el-select v-model="basicForm.transportCondition" placeholder="运输条件" clearable :disabled="disable">
  88. <el-option v-for="dict in dict.type.sys_conditions_carriage" :key="dict.value" :label="dict.label"
  89. :value="dict.value"/>
  90. </el-select>
  91. </el-form-item>
  92. </el-col>
  93. </el-row>
  94. <el-row :gutter="20">
  95. <el-col :span="8">
  96. <el-form-item label="交货周期" prop="leadTime">
  97. <el-input type="number" min="0" :disabled="disable" v-model="basicForm.leadTime"></el-input>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="8">
  101. <el-form-item label="业务线" prop="businessLine"
  102. :rules="{ required: isOneClass, message: '骨科、介入、检验、普耗、设备类物料产线必须输入对应的业务线', trigger: 'blur' }">
  103. <el-select ref="lines" v-model="basicForm.businessLine" placeholder="请选择" clearable :disabled="disable"
  104. @focus="chooseLine">
  105. <el-option v-for="item in lineOptions" :key="item.id" :label="item.name" :value="item.id"/>
  106. </el-select>
  107. </el-form-item>
  108. </el-col>
  109. <el-col :span="8">
  110. <el-form-item label="生产许可证" prop="remark">
  111. <el-input :disabled="disable" v-model="basicForm.productionPermit"></el-input>
  112. </el-form-item>
  113. </el-col>
  114. <el-col :span="8">
  115. <el-form-item label="DI码" prop="remark">
  116. <el-input :disabled="disable" v-model="basicForm.diCode"></el-input>
  117. </el-form-item>
  118. </el-col>
  119. <el-col :span="8">
  120. <el-form-item label="备注" prop="remark">
  121. <el-input :disabled="disable" v-model="basicForm.remark"></el-input>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="8">
  125. <el-form-item label="一级分类" prop="oneClass">
  126. <el-input readonly disabled v-model="basicForm.oneClass"></el-input>
  127. </el-form-item>
  128. </el-col>
  129. </el-row>
  130. <el-row :gutter="20">
  131. <el-col :span="8">
  132. <el-form-item label="二级分类" prop="twoClass">
  133. <el-input readonly disabled v-model="basicForm.twoClass"></el-input>
  134. </el-form-item>
  135. </el-col>
  136. <el-col :span="8">
  137. <el-form-item label="三级分类" prop="threeClass">
  138. <el-input readonly disabled v-model="basicForm.threeClass"></el-input>
  139. </el-form-item>
  140. </el-col>
  141. <el-col :span="8">
  142. <el-form-item label="四级分类" prop="fourClass">
  143. <el-input readonly disabled v-model="basicForm.fourClass">
  144. </el-input>
  145. </el-form-item>
  146. </el-col>
  147. </el-row>
  148. </el-form>
  149. </el-tab-pane>
  150. <el-tab-pane label="医药属性" name="second">
  151. <el-form :model="basicForm2" ref="basic2" label-width="160px">
  152. <el-row :gutter="20">
  153. <el-col :span="8">
  154. <el-form-item label="药品" prop="drug"
  155. :rules="{ required: !isControl, message: '请选择是否药品', trigger: 'change' }">
  156. <el-select v-model="basicForm2.drug" placeholder="请选择" clearable :disabled="disable || isControl">
  157. <el-option v-for="dict in dict.type.sys_medicine" :key="dict.value" :label="dict.label"
  158. :value="dict.value"/>
  159. </el-select>
  160. </el-form-item>
  161. </el-col>
  162. <el-col :span="8">
  163. <el-form-item label="注册证号/备案凭证编号" prop="registrationNo">
  164. <el-input :disabled="disable || isControl" v-model="basicForm2.registrationNo"></el-input>
  165. </el-form-item>
  166. </el-col>
  167. <el-col :span="8">
  168. <el-form-item label="医疗器械" prop="medicalDevices">
  169. <el-select v-model="basicForm2.medicalDevices" placeholder="请选择" clearable
  170. :disabled="disable || isControl">
  171. <el-option v-for="dict in dict.type.medical_instruments" :key="dict.value" :label="dict.label"
  172. :value="dict.value"/>
  173. </el-select>
  174. </el-form-item>
  175. </el-col>
  176. </el-row>
  177. <el-row :gutter="20">
  178. <el-col :span="8">
  179. <el-form-item label="养护类型" prop="maintenanceType">
  180. <el-select v-model="basicForm2.maintenanceType" placeholder="请选择" clearable
  181. :disabled="disable || isControl">
  182. <el-option v-for="dict in dict.type.curing_type" :key="dict.value" :label="dict.label"
  183. :value="dict.value"/>
  184. </el-select>
  185. </el-form-item>
  186. </el-col>
  187. <el-col :span="8">
  188. <el-form-item label="剂型" prop="dosageFrom"
  189. :rules="{ required: !isControl, message: '请选择剂型', trigger: 'change' }">
  190. <el-select ref="doses" v-model="basicForm2.dosageFrom" placeholder="请选择" clearable
  191. :disabled="disable || isControl" @focus="chooseDose">
  192. <el-option v-for="item in doseOptions" :key="item.id" :label="item.name" :value="item.id"/>
  193. </el-select>
  194. </el-form-item>
  195. </el-col>
  196. </el-row>
  197. </el-form>
  198. <!-- <el-row style="margin-bottom: 12px;">
  199. <span>物料类别</span>
  200. </el-row>
  201. <el-row style="margin-bottom: 12px;">
  202. <el-button type="primary" size="small" plain @click="addLine">新增</el-button>
  203. <el-button type="primary" size="small" plain @click="handleDelete">删除</el-button>
  204. <el-button type="primary" size="small" plain @click="testsave">暂存</el-button>
  205. </el-row> -->
  206. <!-- <el-row>
  207. <el-col :span="12">
  208. <el-table
  209. :data="basicForm2.medicineTypeChanges"
  210. class="request-table"
  211. @selection-change="handleSelectionChange"
  212. >
  213. <el-table-column type="selection" width="55" />
  214. <el-table-column label="序号" align="center" prop="sort">
  215. <template slot-scope="scope">
  216. <el-input v-model="scope.row.sort"></el-input>
  217. </template>
  218. </el-table-column>
  219. <el-table-column label="物料类别" align="center" prop="medicineCode">
  220. <template slot-scope="scope">
  221. <el-input v-model="scope.row.medicineCode"></el-input>
  222. </template>
  223. </el-table-column>
  224. <el-table-column label="类别名称" align="center" prop="medicineName">
  225. <template slot-scope="scope">
  226. <el-input v-model="scope.row.medicineName"></el-input>
  227. </template>
  228. </el-table-column>
  229. </el-table>
  230. </el-col>
  231. </el-row> -->
  232. </el-tab-pane>
  233. <el-tab-pane label="修改记录" name="third">
  234. <el-table :data="basicForm.changeRecords" class="request-table">
  235. <el-table-column label="字段名称" align="center" prop="pageCondtion"/>
  236. <el-table-column label="变更前" align="center" prop="beforeChangeValue"/>
  237. <el-table-column label="变更后" align="center" prop="afterChangeValue"/>
  238. </el-table>
  239. </el-tab-pane>
  240. <el-tab-pane label="单据信息" name="fourth">
  241. <el-form :model="basicForm" ref="info" label-width="160px">
  242. <el-row :gutter="20">
  243. <el-col :span="8">
  244. <el-form-item label="申请人" prop="createByName">
  245. <el-input disabled v-model="basicForm.createByName"></el-input>
  246. </el-form-item>
  247. </el-col>
  248. <el-col :span="8">
  249. <el-form-item label="申请时间" prop="createTime">
  250. <el-input disabled v-model="basicForm.createTime"></el-input>
  251. </el-form-item>
  252. </el-col>
  253. <el-col :span="8">
  254. <el-form-item label="创建人" prop="createByName">
  255. <el-input disabled v-model="basicForm.createByName"></el-input>
  256. </el-form-item>
  257. </el-col>
  258. </el-row>
  259. <el-row :gutter="20">
  260. <el-col :span="8">
  261. <el-form-item label="创建时间" prop="createTime">
  262. <el-input disabled v-model="basicForm.createTime"></el-input>
  263. </el-form-item>
  264. </el-col>
  265. <el-col :span="8">
  266. <el-form-item label="最后修改人" prop="updateByName">
  267. <el-input disabled v-model="basicForm.updateByName"></el-input>
  268. </el-form-item>
  269. </el-col>
  270. <el-col :span="8">
  271. <el-form-item label="最后修改时间" prop="updateTime">
  272. <el-input disabled v-model="basicForm.updateTime"></el-input>
  273. </el-form-item>
  274. </el-col>
  275. </el-row>
  276. <el-row :gutter="20">
  277. <!-- <el-col :span="8">
  278. <el-form-item label="最后审核人" prop="approver">
  279. <el-input disabled v-model="basicForm.approver"></el-input>
  280. </el-form-item>
  281. </el-col>
  282. <el-col :span="8">
  283. <el-form-item label="最后审核时间" prop="approvalTime">
  284. <el-input disabled v-model="basicForm.approvalTime"></el-input>
  285. </el-form-item>
  286. </el-col> -->
  287. <el-col :span="8">
  288. <el-form-item label="单据状态" prop="status">
  289. <el-select v-model="basicForm.status" size="small" disabled>
  290. <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value">
  291. </el-option>
  292. </el-select>
  293. <!-- <el-input disabled v-model="basicForm.status"></el-input> -->
  294. </el-form-item>
  295. </el-col>
  296. </el-row>
  297. </el-form>
  298. </el-tab-pane>
  299. </el-tabs>
  300. <div class="btn_group">
  301. <el-col :span="1.5">
  302. <el-button type="primary" size="small" plain @click="save"
  303. v-if="pageStu == 'add' || pageStu == 'edit'">保存
  304. </el-button>
  305. </el-col>
  306. <el-col :span="1.5" style="margin: 0 10px;">
  307. <el-button type="primary" size="small" plain @click="submit" v-if="pageStu == 'edit'">提交</el-button>
  308. </el-col>
  309. <el-col :span="1.5">
  310. <el-button type="primary" size="small" plain @click="back">返回</el-button>
  311. </el-col>
  312. </div>
  313. <popDialog ref="contractSelect" @doSubmit="selectionsToInput" :selectData="selectData" :single="true"/>
  314. <factory ref="factory" @doSubmit="acceptFactory" :selectData="selectData2" :single="true"/>
  315. <fourClass ref="fourClass" @doSubmit="acceptFourClass" :selectData="selectData3" :single="true"/>
  316. <dose ref="dose" @doSubmit="acceptDose" :selectData="selectData9" :single="true"/>
  317. <serviceline ref="line" @doSubmit="acceptLine" :selectData="selectData8" :single="true"/>
  318. </div>
  319. </template>
  320. <script>
  321. import popDialog from '@/components/PopDialog/index.vue'
  322. import factory from '@/components/PopDialog/productFactory.vue'
  323. import {addChangeList, getMaterialDetails, getChangeDetails, editChangeList} from '@/api/changeApply/basic'
  324. import {getDose, getLine} from '@/api/requisition/basic'
  325. // 生产厂商/代理人调用用于回显
  326. import {getProductFactory} from '@/api/changeApply/basic'
  327. // 四级分类
  328. import fourClass from '@/components/PopDialog/fourClass.vue'
  329. import dose from '@/components/PopDialog/dose.vue'
  330. import serviceline from '@/components/PopDialog/serviceline.vue'
  331. // 调用物料分类详情接口用于数据回显
  332. import {getDetail} from '@/api/classify/basic';
  333. export default {
  334. name: 'applyAdd',
  335. dicts: ['sys_storage_condition', 'sys_conditions_carriage', 'sys_medicine', 'medical_instruments', 'curing_type'],
  336. components: {
  337. popDialog,
  338. factory,
  339. dose,
  340. serviceline,
  341. fourClass
  342. },
  343. props: ['pageStu', 'row', 'disable'],
  344. model: {
  345. prop: 'isList',
  346. event: 'jugislist'
  347. },
  348. data() {
  349. return {
  350. factoryOptions: [],
  351. // 剂型
  352. doseOptions: [],
  353. selectData9: [],
  354. selectData8: [],
  355. tabValue: 'first',
  356. isControl: true,
  357. // 业务线
  358. lineOptions: [],
  359. isOneClass: false,
  360. basicForm: {
  361. code: '',
  362. orgId: '德荣集团',
  363. // 物料id
  364. materialId: '',
  365. materialCode: '',
  366. materialName: '',
  367. materialClassifyId: '',
  368. medicineMaterial: '2',
  369. oneClass: '',
  370. twoClass: '',
  371. threeClass: '',
  372. fourClass: '',
  373. specification: '',
  374. model: '',
  375. factory: '',
  376. registrant: '',
  377. storageConditions: '',
  378. transportCondition: '',
  379. leadTime: '',
  380. remark: '',
  381. // 修改记录
  382. changeRecords: [],
  383. // 单据信息字段
  384. createBy: '',
  385. applicationTime: '',
  386. createTime: '',
  387. updateBy: '',
  388. updateTime: '',
  389. approver: '',
  390. approvalTime: '',
  391. status: '',
  392. // 业务线
  393. businessLine: '',
  394. // 生产许可证/经营许可证/备案号
  395. productionPermit: '',
  396. // di码
  397. diCode: ''
  398. },
  399. options: [{
  400. value: '0',
  401. label: '是'
  402. }, {
  403. value: '2',
  404. label: '否'
  405. }],
  406. statusOptions: [{
  407. value: '0', label: '未提交'
  408. }, {
  409. value: '1', label: '审批中'
  410. }, {
  411. value: '2', label: '已完成'
  412. }, {
  413. value: '3', label: '已驳回'
  414. },],
  415. basicRules: {
  416. materialCode: [{required: true, message: '请选择物料编码', trigger: 'blur'}],
  417. materialName: [{required: true, message: '请填写物料名称', trigger: 'blur'}],
  418. specification: [{required: true, message: '请填写规格', trigger: 'blur'}],
  419. materialClassifyId: [{required: true, message: '请选择物料分类', trigger: 'blur'}],
  420. // model: [{required: true, message: '请填写型号', trigger: 'blur'}],
  421. factory: [{required: true, message: '请选择生产厂家/代理人', trigger: 'blur'}],
  422. registrant: [{required: true, message: '请填写注册人/上市许可持有人', trigger: 'blur'}],
  423. storageConditions: [{required: true, message: '请选择存储条件', trigger: 'blur'}],
  424. // transportCondition: [{required: true, message: '请选择运输条件', trigger: 'blur'}],
  425. leadTime: [{required: true, message: '请填写交货周期', trigger: 'blur'}],
  426. },
  427. basicForm2: {
  428. drug: '',
  429. registrationNo: '',
  430. medicalDevices: '',
  431. maintenanceType: '',
  432. // 剂型
  433. dosageFrom: ''
  434. // 医药属性子表
  435. // medicineTypeChanges:[
  436. // ],
  437. },
  438. // tableList: [],
  439. // 子表选中
  440. ids: [],
  441. // 弹窗
  442. name: '',
  443. selectData: [],
  444. selectData2: [],
  445. selectData3: []
  446. }
  447. },
  448. // watch: {
  449. // value: {
  450. // handler (newVal) {
  451. // this.selectData = []
  452. // if (newVal) {
  453. // newVal.split(',').forEach((id) => { // 回显拿数据
  454. // this.contractService.queryById(id).then(({data}) => {
  455. // if (data && data.id !== '') {
  456. // this.selectData.push(data)
  457. // }
  458. // })
  459. // })
  460. // }
  461. // },
  462. // immediate: true,
  463. // deep: false
  464. // },
  465. // selectData: {
  466. // handler (newVal) {
  467. // this.name = newVal.map(contract => contract.contractName).join(',')
  468. // },
  469. // immediate: false,
  470. // deep: false
  471. // }
  472. // },
  473. mounted() {
  474. this.$nextTick(() => {
  475. // console.log('页面状态',this.pageStu)
  476. if (this.pageStu == 'check') {
  477. // alert('详情页面:')
  478. console.log('页面状态', this.pageStu)
  479. console.log('数据', this.row)
  480. this.getDetails(this.row)
  481. // 生产厂家代理人用于回显
  482. if (this.row.factory) {
  483. this.getFactoryDetails(this.row.factory)
  484. }
  485. } else if (this.pageStu == 'edit') {
  486. // alert('修改页面')
  487. console.log('页面状态', this.pageStu)
  488. console.log('数据', this.row)
  489. this.getDetails(this.row)
  490. // 控制医药属性是否能够填写
  491. if (this.row.medicineMaterial == '0') {
  492. this.isControl = false
  493. } else {
  494. this.isControl = true
  495. }
  496. // 生产厂家代理人用于回显
  497. if (this.row.factory) {
  498. this.getFactoryDetails(this.row.factory)
  499. }
  500. } else if (this.pageStu == 'add') {
  501. // alert('新增页面')
  502. console.log('页面状态', this.pageStu)
  503. }
  504. })
  505. },
  506. methods: {
  507. // 剂型显示列表
  508. chooseDose() {
  509. this.$refs.doses.blur()
  510. this.$refs.dose.init()
  511. },
  512. // 选择剂型-树形
  513. acceptDose(selections) {
  514. this.doseOptions.push(selections)
  515. this.basicForm2.dosageFrom = selections.id
  516. this.getDoseDetails(selections.id)
  517. },
  518. // 剂型回显
  519. getDoseDetails(id) {
  520. getDose({id: id}).then(res => {
  521. console.log('剂型', res)
  522. if (res.code === 200) {
  523. this.doseOptions = res.data.tableBody
  524. }
  525. })
  526. },
  527. // 生产厂家/代理人用于回显
  528. getFactoryDetails(id) {
  529. getProductFactory({id: id}).then(res => {
  530. if (res.code === 200) {
  531. this.factoryOptions = res.data.tableBody
  532. }
  533. })
  534. },
  535. // 选择是否医药物料时控制医药属性
  536. controlMedic(val) {
  537. console.log('val', val)
  538. if (val == '0') {
  539. this.isControl = false
  540. // 初始化剂型为其他
  541. this.basicForm2.dosageFrom = '0001A11000000000BX7Z'
  542. this.getDoseDetails(this.basicForm2.dosageFrom)
  543. } else {
  544. this.basicForm2.drug = ''
  545. this.basicForm2.registrationNo = ''
  546. this.basicForm2.medicalDevices = ''
  547. this.basicForm2.maintenanceType = ''
  548. this.isControl = true
  549. }
  550. },
  551. handleClick(tab, event) {
  552. console.log(tab, event);
  553. console.log('页面状态', this.pageStu)
  554. },
  555. // 如果是详情进入,则调用详情接口
  556. getDetails(row) {
  557. getChangeDetails(row.id).then(res => {
  558. if (res.code === 200) {
  559. this.basicForm = res.data
  560. if (res.data.medicineChange) {
  561. this.basicForm2 = res.data.medicineChange
  562. }
  563. // 剂型回显
  564. if (res.data.medicineChange && res.data.medicineChange.dosageFrom) {
  565. this.getDoseDetails(res.data.medicineChange.dosageFrom)
  566. }
  567. // 业务线回显
  568. if (res.data.businessLine) {
  569. this.getLineDetails(res.data.businessLine)
  570. }
  571. }
  572. })
  573. },
  574. save() {
  575. // alert('保存传status:0')
  576. let sparams = {...this.basicForm, ...{status: 0}}
  577. sparams.medicineChange = this.basicForm2
  578. console.log('保存参数', sparams)
  579. this.$refs['basic'].validate((valid) => {
  580. if (valid) {
  581. this.$refs['basic2'].validate(valid => {
  582. if (valid) {
  583. addChangeList(sparams).then(res => {
  584. if (res.code === 200) {
  585. this.$message({
  586. message: res.msg,
  587. type: 'success'
  588. });
  589. this.back()
  590. }
  591. })
  592. }
  593. })
  594. }
  595. })
  596. },
  597. submit() {
  598. // alert('提交传status:1')
  599. let sparams = {...this.basicForm, ...{status: 1}}
  600. sparams.medicineChange = this.basicForm2
  601. console.log('提交参数', sparams)
  602. this.$refs['basic'].validate((valid) => {
  603. if (valid) {
  604. this.$refs['basic2'].validate(valid => {
  605. if (valid) {
  606. editChangeList(sparams).then(res => {
  607. if (res.code === 200) {
  608. this.$message({
  609. message: res.msg,
  610. type: 'success'
  611. });
  612. this.back()
  613. }
  614. })
  615. }
  616. })
  617. }
  618. })
  619. },
  620. back() {
  621. this.$emit('jugislist', true)
  622. let queryParams = {
  623. pageNum: 1,
  624. pageSize: 10
  625. }
  626. this.$emit('refresh', queryParams)
  627. },
  628. // 子表增删行
  629. // handleSelectionChange(val) {
  630. // this.ids = val
  631. // console.log('this.ids',this.ids)
  632. // },
  633. // addLine() {
  634. // //添加行数
  635. // let newValue = {
  636. // sort:'',
  637. // medicineCode: '',
  638. // medicineName: '',
  639. // };
  640. // this.basicForm2.medicineTypeChanges.push(newValue);
  641. // },
  642. // handleDelete(index) {
  643. // if(this.ids.length == 0) {
  644. // this.$message({
  645. // message: '请选择删除条目',
  646. // type: 'warning'
  647. // });
  648. // } else {
  649. // // console.log('index',index)
  650. // // this.basicForm2.medicineTypeChanges.splice(index, 1);
  651. // this.basicForm2.medicineTypeChanges = this.basicForm2.medicineTypeChanges.filter(item =>
  652. // !this.ids.some(ele =>
  653. // ele.sort == item.sort))
  654. // }
  655. // },
  656. // testsave() {
  657. // console.log('暂存表格:', this.basicForm2.medicineTypeChanges)
  658. // console.log('暂存表单1', this.basicForm)
  659. // let params = {...this.basicForm, ...this.basicForm2}
  660. // console.log('暂存总表单', params)
  661. // },
  662. // 设置选中
  663. selectionsToInput(selections) {
  664. console.log('父组件拿到的:', selections)
  665. this.selectData = selections
  666. this.$emit('getInfo', this.selectData)
  667. getMaterialDetails(selections[0].id).then(res => {
  668. console.log('res', res)
  669. if (res.code === 200) {
  670. let data = res.data.data
  671. // 物料id
  672. this.basicForm.materialId = data.id
  673. // 物料分类Id
  674. this.basicForm.materialClassifyId = data.classifyId
  675. this.basicForm.materialCode = data.code
  676. this.basicForm.materialName = data.name
  677. this.basicForm.medicineMaterial = data.isMedicine
  678. this.basicForm.oneClass = data.oneClass
  679. this.basicForm.twoClass = data.twoClass
  680. this.basicForm.threeClass = data.threeClass
  681. this.basicForm.fourClass = data.fourClass
  682. this.basicForm.specification = data.specification
  683. this.basicForm.model = data.model
  684. this.basicForm.factory = data.manufacturerId
  685. this.basicForm.registrant = data.registrant
  686. this.basicForm.storageConditions = data.storageCondition
  687. this.basicForm.transportCondition = data.transportationCondition
  688. this.basicForm.leadTime = data.deliveryPeriod
  689. this.basicForm.diCode = data.diCode
  690. this.basicForm.businessLine = data.businessLine
  691. this.basicForm.productionPermit = data.productionPermit
  692. if (data.manufacturerId) {
  693. this.getFactoryDetails(data.manufacturerId)
  694. }
  695. if (data.businessLine) {
  696. this.getLineDetails(data.businessLine)
  697. }
  698. if (data.medcines.length !== 0) {
  699. this.basicForm2.drug = data.medcines[0].isDrug
  700. this.basicForm2.registrationNo = data.medcines[0].registrationNo
  701. this.basicForm2.medicalDevices = data.medcines[0].medicalInstruments
  702. this.basicForm2.maintenanceType = data.medcines[0].curingType
  703. this.basicForm2.dosageFrom = data.medcines[0].dosageFrom
  704. if (data.medcines[0].dosageFrom) {
  705. this.getDoseDetails(data.medcines[0].dosageFrom)
  706. }
  707. }
  708. // 控制医药属性是否能够填写
  709. if (this.basicForm.medicineMaterial == '0') {
  710. this.isControl = false
  711. } else {
  712. this.isControl = true
  713. }
  714. }
  715. })
  716. },
  717. // selectionsToInput2 (selections) {
  718. // console.log('选择的数据',selections)
  719. // this.basicForm.factory = selections[0].manufactureName
  720. // },
  721. // 显示列表
  722. test01() {
  723. console.log('测试点击')
  724. this.$refs.contractSelect.init()
  725. },
  726. // test02() {
  727. // console.log('测试弹窗2');
  728. // this.$refs.contractSelect2.init()
  729. // },
  730. // 选择生产厂家/代理人
  731. acceptFactory(selections) {
  732. console.log('选择的数据', selections)
  733. this.factoryOptions = selections
  734. this.basicForm.factory = selections[0].id
  735. this.getFactoryDetails(selections[0].id)
  736. },
  737. // 生产厂家/代理人显示列表
  738. chooseFactory() {
  739. this.$refs.factoryOrman.blur()
  740. this.$refs.factory.init()
  741. },
  742. // 选择四级分类
  743. acceptFourClass(selections) {
  744. console.log('收到的四级分类', selections)
  745. this.basicForm.materialClassifyId = selections.id
  746. this.getTreeDetails(selections.id)
  747. },
  748. // 四级分类显示列表
  749. chooseFourClass() {
  750. this.$refs.fourClass.init()
  751. },
  752. // 选择四级分类后需要根据id再次查询一下123级分类
  753. getTreeDetails(id) {
  754. getDetail(id).then(res => {
  755. if (res.code === 200) {
  756. this.basicForm.oneClass = res.data.oneClass
  757. this.basicForm.twoClass = res.data.twoClass
  758. this.basicForm.threeClass = res.data.threeClass
  759. this.basicForm.fourClass = res.data.fourClass
  760. const classjudge = res.data.oneClass
  761. if (classjudge.includes('介入耗材&5') || classjudge.includes('骨科耗材&2') || classjudge.includes('普通耗材&3') || classjudge.includes('医用设备&1') || classjudge.includes('体外诊断&4')) {
  762. this.isOneClass = true
  763. } else {
  764. this.isOneClass = false
  765. }
  766. }
  767. })
  768. },
  769. // 选择业务线
  770. acceptLine(selections) {
  771. this.lineOptions = selections
  772. this.basicForm.businessLine = selections[0].id
  773. this.getLineDetails(selections[0].id)
  774. },
  775. // 业务线显示列表
  776. chooseLine() {
  777. this.$refs.lines.blur()
  778. this.$refs.line.init()
  779. },
  780. // 业务线回显
  781. getLineDetails(id) {
  782. getLine({id: id}).then(res => {
  783. console.log('业务线', res)
  784. if (res.code === 200) {
  785. this.lineOptions = res.data.tableBody
  786. }
  787. })
  788. },
  789. }
  790. }
  791. </script>
  792. <style lang="scss" scoped>
  793. .apply_add {
  794. height: calc(100vh - 84px);
  795. padding: 12px;
  796. box-sizing: border-box;
  797. overflow-y: auto;
  798. }
  799. .btn_group {
  800. width: 100%;
  801. margin: 20px 0;
  802. display: flex;
  803. justify-content: center;
  804. }
  805. </style>