Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

addInspection.vue 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. <template>
  2. <el-dialog
  3. :title="formTitle"
  4. width="900px"
  5. :visible.sync="visible"
  6. :before-close="_close"
  7. >
  8. <div>
  9. <el-form
  10. :model="form"
  11. :rules="rules"
  12. ref="form"
  13. label-width="100px"
  14. style="display: flex; flex-wrap: wrap; justify-content: space-between"
  15. >
  16. <el-form-item
  17. label="组套名称 : "
  18. prop="project_team"
  19. style="width: 100%"
  20. >
  21. <el-input
  22. v-model="form.project_team"
  23. placeholder=""
  24. maxlength="30"
  25. ></el-input>
  26. </el-form-item>
  27. <el-form-item label="组套价格 : " prop="price" style="width: 100%">
  28. <el-input
  29. v-model="form.price"
  30. placeholder=""
  31. maxlength="30"
  32. ></el-input>
  33. </el-form-item>
  34. <el-form-item label="拼音 : " prop="pinyin" style="width: 50%">
  35. <el-input
  36. v-model="form.pinyin"
  37. placeholder=""
  38. maxlength="30"
  39. ></el-input>
  40. </el-form-item>
  41. <el-form-item label="五笔 : " prop="wubi" style="width: 50%">
  42. <el-input
  43. v-model="form.wubi"
  44. placeholder=""
  45. maxlength="30"
  46. ></el-input>
  47. </el-form-item>
  48. <el-form-item label="试管颜色 : " prop="tube_color" style="width: 50%">
  49. <el-select
  50. v-model="form.tube_color"
  51. style="width: 160px"
  52. placeholder="请选择"
  53. >
  54. <el-option
  55. v-for="(item, index) in getDictionaryDataConfig(
  56. 'system',
  57. 'tube_color'
  58. )"
  59. :key="index"
  60. :label="item.name"
  61. :value="item.id"
  62. >
  63. </el-option>
  64. </el-select>
  65. </el-form-item>
  66. <el-form-item label="组套类型 : " prop="team_type" style="width: 50%">
  67. <el-select
  68. v-model="form.team_type"
  69. style="width: 100%"
  70. placeholder="请选择"
  71. >
  72. <el-option
  73. v-for="item in options"
  74. :key="item.value"
  75. :label="item.label"
  76. :value="item.value"
  77. >
  78. </el-option>
  79. </el-select>
  80. </el-form-item>
  81. <el-form-item label="备注 : " prop="name" style="width: 100%">
  82. <el-input
  83. type="textarea"
  84. :rows="2"
  85. placeholder="请输入内容"
  86. v-model="form.remark"
  87. ></el-input>
  88. </el-form-item>
  89. <el-form-item label="组套明细" style="width: 50%">
  90. <el-select
  91. v-model="form.project_detail"
  92. filterable
  93. placeholder="请选择"
  94. @change="changeProject"
  95. >
  96. <el-option
  97. v-for="item in projectList"
  98. :key="item.new_id"
  99. :label="item.project_name"
  100. :value="item.new_id"
  101. >
  102. </el-option>
  103. </el-select>
  104. </el-form-item>
  105. <el-form-item label="数量" style="width: 50%">
  106. <div style="display: flex">
  107. <el-input
  108. v-model="form.number"
  109. style="margin-right: 10px"
  110. ></el-input>
  111. <el-button type="primary" @click="addProjectList">添加</el-button>
  112. </div>
  113. </el-form-item>
  114. </el-form>
  115. <el-form>
  116. <el-table
  117. :data="tableData"
  118. border
  119. style="100%"
  120. :row-style="{ color: '#303133' }"
  121. :header-cell-style="{
  122. backgroundColor: 'rgb(245, 247, 250)',
  123. color: '#606266',
  124. }"
  125. highlight-current-row
  126. ref="tab"
  127. >
  128. <el-table-column align="center" prop="name" label="分类" width="120">
  129. <template slot-scope="scope">
  130. <div>
  131. {{
  132. scope.row.type == 2
  133. ? getId(scope.row.statistical_classification)
  134. : "耗材"
  135. }}
  136. </div>
  137. </template>
  138. </el-table-column>
  139. <el-table-column
  140. align="center"
  141. prop="name"
  142. label="组套明细"
  143. width="120"
  144. >
  145. <template slot-scope="scope">{{ scope.row.project_name }}</template>
  146. </el-table-column>
  147. <el-table-column align="center" prop="name" label="数量" width="120">
  148. <template slot-scope="scope">{{ scope.row.number }}</template>
  149. </el-table-column>
  150. <el-table-column align="center" prop="name" label="单位" width="120">
  151. <template slot-scope="scope">
  152. <div v-if="scope.row.type == 2">{{ scope.row.unit }}</div>
  153. <div v-if="scope.row.type == 3">
  154. {{ scope.row.unit }}
  155. </div>
  156. </template>
  157. </el-table-column>
  158. <el-table-column align="center" prop="name" label="单价" width="120">
  159. <template slot-scope="scope">{{ scope.row.price }}</template>
  160. </el-table-column>
  161. <el-table-column align="center" prop="name" label="操作">
  162. <template slot-scope="scope">
  163. <el-tooltip
  164. class="item"
  165. effect="dark"
  166. content="删除"
  167. placement="top"
  168. >
  169. <el-button
  170. type="danger"
  171. icon="el-icon-delete"
  172. size="small"
  173. @click="DeleteProject(scope.row.id, scope.$index)"
  174. ></el-button>
  175. </el-tooltip>
  176. </template>
  177. </el-table-column>
  178. </el-table>
  179. </el-form>
  180. </div>
  181. <div slot="footer" class="dialog-footer">
  182. <el-button @click="hide">取 消</el-button>
  183. <el-button type="primary" @click="submitAction('form')">保 存</el-button>
  184. </div>
  185. </el-dialog>
  186. </template>
  187. <script>
  188. import { getDataConfig, getDictionaryDataConfig } from "@/utils/data";
  189. import {
  190. addProjectList,
  191. DeleteProject,
  192. getAllProjectList,
  193. getProjectDetail,
  194. saveProjectTeam,
  195. } from "@/api/project/project";
  196. import { saveTeam } from "@/api/his/his";
  197. export default {
  198. data() {
  199. return {
  200. project_name: "",
  201. visible: false,
  202. formTitle: "",
  203. activeName: "first",
  204. form: {
  205. project_team: "",
  206. price: 0,
  207. pinyin: "",
  208. wubi: "",
  209. tube_color: "",
  210. team_type: "",
  211. remark: "",
  212. project_detail: "",
  213. number: "1",
  214. },
  215. options: [
  216. { value: 1, label: "是" },
  217. { value: 2, label: "否" },
  218. ],
  219. value: "",
  220. radio: "1",
  221. rules: {
  222. project_team: [
  223. { required: true, message: "请填写组套名称", trigger: "blur" },
  224. ],
  225. // pinyin: [{ required: true, message: '请填写拼音' , trigger: 'blur' }],
  226. // wubi: [{ required: true, message: '请填写五笔' , trigger: 'blur' }],
  227. price: [{ required: true, message: "请填写价格", trigger: "change" }],
  228. //team_type: [{ required: true, message: '请填写组套类型', trigger: 'change' }]
  229. },
  230. tableData: [],
  231. projectList: [],
  232. tabList: [],
  233. itemList: [],
  234. };
  235. },
  236. methods: {
  237. getUnit(id) {
  238. var arr = getDataConfig("hemodialysis", "units");
  239. for (let i = 0; i < arr.length; i++) {
  240. if (id == arr[i].id) {
  241. return arr[i].name;
  242. }
  243. }
  244. },
  245. changeProject(val) {
  246. this.form.number = 1;
  247. },
  248. querySearch(queryString, cb) {
  249. var restaurants = this.projectList;
  250. var results = queryString
  251. ? restaurants.filter(this.createFilter(queryString))
  252. : restaurants;
  253. // 调用 callback 返回建议列表的数据
  254. cb(results);
  255. },
  256. createFilter(queryString) {
  257. return (restaurant) => {
  258. return (
  259. restaurant.project_name
  260. .toLowerCase()
  261. .indexOf(queryString.toLowerCase()) === 0
  262. );
  263. };
  264. },
  265. handleSelect(val) {
  266. this.project_name = val.project_name;
  267. this.form.project_detail = val.id;
  268. },
  269. getDataConfig(module, filed_name) {
  270. return getDataConfig(module, filed_name);
  271. },
  272. getDictionaryDataConfig(module, filed_name) {
  273. return getDictionaryDataConfig(module, filed_name);
  274. },
  275. _close: function (done) {
  276. done();
  277. },
  278. clear: function () {
  279. this.form.id = 0;
  280. this.form.name = "";
  281. this.form.intro = "";
  282. },
  283. show(id) {
  284. this.visible = true;
  285. this.formTitle = "新增";
  286. },
  287. hide() {
  288. this.visible = false;
  289. },
  290. submitAction(formName) {
  291. this.$refs[formName].validate((valid) => {
  292. var params = {
  293. project_team: this.form.project_team,
  294. price: this.form.price,
  295. pinyin: this.form.pinyin,
  296. wubi: this.form.wubi,
  297. tube_color: this.form.tube_color,
  298. team_type: this.form.team_type,
  299. remark: this.form.remark,
  300. };
  301. let data = {
  302. info: this.tableData,
  303. };
  304. saveTeam(data, params).then((response) => {
  305. if (response.data.state == 1) {
  306. var projectTeam = response.data.data.projectTeam;
  307. this.$message.success("保存成功");
  308. this.visible = false;
  309. (this.form.project_team = ""),
  310. (this.form.price = ""),
  311. (this.form.pinyin = ""),
  312. (this.form.wubi = ""),
  313. (this.form.tube_color = ""),
  314. (this.form.team_type = ""),
  315. (this.form.remark = "");
  316. this.tableData = [];
  317. this.form.number = "";
  318. this.$parent.getlist();
  319. } else {
  320. this.$message.error("项目组套名称已存在!");
  321. }
  322. });
  323. });
  324. },
  325. getlist() {
  326. let params = {
  327. keyword: "",
  328. };
  329. getAllProjectList(params).then((response) => {
  330. if (response.data.state == 1) {
  331. var projectList = response.data.data.projectList;
  332. var goodInfos = response.data.data.good_info;
  333. for (let i = 0; i < projectList.length; i++) {
  334. let obj = {
  335. id: projectList[i].id,
  336. statistical_classification:
  337. projectList[i].statistical_classification,
  338. number: "1",
  339. project_name: projectList[i].project_name,
  340. unit: projectList[i].unit,
  341. price: projectList[i].price,
  342. type: 2,
  343. new_id: Math.floor(
  344. (Math.random() + Math.floor(Math.random() * 9 + 1)) *
  345. Math.pow(10, 10 - 1)
  346. ),
  347. };
  348. this.projectList.push(obj);
  349. }
  350. for (let i = 0; i < goodInfos.length; i++) {
  351. let obj = {
  352. id: goodInfos[i].id,
  353. statistical_classification:goodInfos[i].statistical_classification,
  354. number: "1",
  355. project_name:goodInfos[i].good_name + " " + goodInfos[i].specification_name,
  356. unit: goodInfos[i].packing_unit,
  357. price: goodInfos[i].retail_price,
  358. type: 3,
  359. new_id: Math.floor(
  360. (Math.random() + Math.floor(Math.random() * 9 + 1)) *
  361. Math.pow(10, 10 - 1)
  362. ),
  363. };
  364. this.projectList.push(obj);
  365. }
  366. }
  367. });
  368. },
  369. getId(id) {
  370. var name = "";
  371. var statistics_category = getDictionaryDataConfig(
  372. "system",
  373. "statistics_category"
  374. );
  375. for (let i = 0; i < statistics_category.length; i++) {
  376. if (id == statistics_category[i].id) {
  377. name = statistics_category[i].name;
  378. }
  379. }
  380. return name;
  381. },
  382. chagneInspection(id) {
  383. getProjectDetail(id).then((response) => {
  384. if (response.data.state == 1) {
  385. var projectdetail = response.data.data.projecDetail;
  386. this.tableData.push(projectdetail);
  387. }
  388. });
  389. },
  390. addProjectList() {
  391. if(this.tableData.length > 0){
  392. for(let i=0;i<this.tableData.length;i++){
  393. if(this.tableData[i].new_id == this.form.project_detail){
  394. this.$message.error("项目名称已存在")
  395. return
  396. }
  397. }
  398. }
  399. console.log("project_232332323232323232",this.projectList)
  400. for (let i = 0; i < this.projectList.length; i++) {
  401. if (this.form.project_detail == this.projectList[i].new_id) {
  402. this.projectList[i].number = this.form.number
  403. this.projectList[i].number = this.projectList[i].number.toString()
  404. this.tableData.push(this.projectList[i])
  405. this.form.project_detail = ''
  406. this.form.number = 1
  407. }
  408. }
  409. },
  410. DeleteProject(id, index) {
  411. this.$confirm("确认删除此项目吗?", "删除", {
  412. confirmButtonText: "确 定",
  413. cancelButtonText: "取 消",
  414. type: "warning",
  415. })
  416. .then(() => {
  417. this.tableData.splice(index, 1);
  418. })
  419. .catch(() => {});
  420. },
  421. },
  422. created() {
  423. //获取所以的项目
  424. this.getlist();
  425. },
  426. watch: {
  427. tableData: function () {
  428. let c = 0;
  429. this.form.price = 0;
  430. for (let i = 0; i < this.tableData.length; i++) {
  431. let a = parseFloat(this.tableData[i].number).toFixed(2);
  432. let b = parseFloat(this.tableData[i].price).toFixed(2);
  433. c = c + this.form.price + a * b;
  434. }
  435. this.form.price = c.toFixed(2);
  436. },
  437. },
  438. };
  439. </script>