Ver código fonte

Merge branch '04/19replaceMusic' into test

mo 4 anos atrás
pai
commit
a603c2f993

+ 34 - 0
src/views/reaplceMusicPlayer/api.js

@@ -36,3 +36,37 @@ export function openPayReplacement (data) {
     requestType: 'form',
     requestType: 'form',
   })
   })
 }
 }
+
+// 根据声部查询品牌乐器
+export function getInstrumentSoundList (data) {
+  return request2({
+    url: api + `/replacementInstrument/queryPage`,
+    method: 'get',
+    params: data,
+    requestType: 'form',
+  })
+}
+
+// 查询详情页列表
+export function getInstrumentActivityList (data) {
+  return request2({
+    url: api + `/replacementInstrumentActivity/queryPage`,
+    method: 'get',
+    params: data,
+    requestType: 'form',
+  })
+}
+
+// 修改声部和乐器
+export function updateInstrumentActivity (data) {
+  return request2({
+    url: api + `/replacementInstrumentActivity/update`,
+    method: 'get',
+    params: data,
+    requestType: 'form',
+  })
+}
+
+// 导出
+
+

+ 60 - 30
src/views/reaplceMusicPlayer/index.vue

@@ -16,13 +16,13 @@
         >
         >
           生成链接
           生成链接
         </div>
         </div>
-        <!-- <div class="newBand" @click="onExport" style="max-width: 150px">
+        <div class="newBand" @click="onExport" style="max-width: 150px" v-if="permission('replacementInstrumentActivity/export')">
           导出
           导出
-        </div> -->
+        </div>
       </div>
       </div>
       <save-form
       <save-form
         :inline="true"
         :inline="true"
-        ref='searchForm'
+        ref="searchForm"
         :model="searchForm"
         :model="searchForm"
         @submit="search"
         @submit="search"
         @reset="onReSet"
         @reset="onReSet"
@@ -113,9 +113,9 @@
           <el-table-column align="center" prop="studentId" label="操作">
           <el-table-column align="center" prop="studentId" label="操作">
             <template slot-scope="scope">
             <template slot-scope="scope">
               <div>
               <div>
-                <!-- <el-button type="text" @click="lookDetail(scope.row)"
+                <el-button type="text" @click="lookDetail(scope.row)" v-if="permission('replacementInstrumentActivity/queryPage')"
                   >详情</el-button
                   >详情</el-button
-                > -->
+                >
                 <el-button
                 <el-button
                   type="text"
                   type="text"
                   @click="onCreateQRCode(scope.row, '调查链接')"
                   @click="onCreateQRCode(scope.row, '调查链接')"
@@ -129,7 +129,10 @@
                 <el-button
                 <el-button
                   type="text"
                   type="text"
                   @click="openPay(scope.row)"
                   @click="openPay(scope.row)"
-                  v-if="!scope.row.openPay&&permission('replacementInstrumentCooperation/openPay')"
+                  v-if="
+                    !scope.row.openPay &&
+                    permission('replacementInstrumentCooperation/openPay')
+                  "
                   >开启缴费</el-button
                   >开启缴费</el-button
                 >
                 >
               </div>
               </div>
@@ -165,7 +168,7 @@
       width="1000px"
       width="1000px"
       v-if="detailVisible"
       v-if="detailVisible"
     >
     >
-      <detail ref="detail" @close="close" />
+      <detail ref="detail" @close="close" :detail="activeRow" />
       <div slot="footer">
       <div slot="footer">
         <el-button type="primary" @click="detailVisible = false"
         <el-button type="primary" @click="detailVisible = false"
           >确定</el-button
           >确定</el-button
@@ -173,9 +176,7 @@
       </div>
       </div>
     </el-dialog>
     </el-dialog>
 
 
-      <qr-code v-model="qrcodeStatus"
-             :title="qrcodeName"
-             :codeUrl="codeUrl" />
+    <qr-code v-model="qrcodeStatus" :title="qrcodeName" :codeUrl="codeUrl" />
 
 
     <!-- <el-dialog :title="qrcodeName" :visible.sync="qrcodeStatus" width="300px">
     <!-- <el-dialog :title="qrcodeName" :visible.sync="qrcodeStatus" width="300px">
       <div class="left-code">
       <div class="left-code">
@@ -200,9 +201,12 @@ import addUrl from "./modals/addUrl";
 import detail from "./modals/detail";
 import detail from "./modals/detail";
 import load from "@/utils/loading";
 import load from "@/utils/loading";
 import { getReplacementList, openPayReplacement } from "./api";
 import { getReplacementList, openPayReplacement } from "./api";
+import { Export } from '@/utils/downLoadFile'
+import cleanDeep from 'clean-deep'
+import qs from 'qs';
 import QrCode from "@/components/QrCode/index";
 import QrCode from "@/components/QrCode/index";
 export default {
 export default {
-  components: { pagination, addUrl, detail, QrCode, },
+  components: { pagination, addUrl, detail, QrCode },
   data() {
   data() {
     return {
     return {
       searchForm: {
       searchForm: {
@@ -225,6 +229,7 @@ export default {
       qrcodes: true,
       qrcodes: true,
       qrcodeStatus: false,
       qrcodeStatus: false,
       qrcodeName: "调查链接",
       qrcodeName: "调查链接",
+      activeRow: null,
     };
     };
   },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -261,8 +266,8 @@ export default {
       this.getList();
       this.getList();
     },
     },
     onReSet() {
     onReSet() {
-      this.$refs.searchForm.resetFields()
-      this.search()
+      this.$refs.searchForm.resetFields();
+      this.search();
     },
     },
     makeUrl() {
     makeUrl() {
       this.makeUrlVisible = true;
       this.makeUrlVisible = true;
@@ -274,8 +279,27 @@ export default {
       this.makeUrlVisible = false;
       this.makeUrlVisible = false;
       this.detailVisible = false;
       this.detailVisible = false;
     },
     },
-    onExport() {},
+    async onExport() {
+      const { search, ...rest } = this.searchForm;
+      let obj = {
+        ...rest,
+        page: this.rules.page,
+        rows: this.rules.limit,
+        cooperationOrganIdOrName:search
+      };
+      await Export(
+        this,
+        {
+          url: "/api-web/replacementInstrumentActivity/export",
+          fileName: "乐器置换列表.xlsx",
+          method: "post",
+          params: qs.stringify(cleanDeep(obj)),
+        },
+        "您确定导出乐器置换列表"
+      );
+    },
     lookDetail(row) {
     lookDetail(row) {
+      this.activeRow = row;
       this.detailVisible = true;
       this.detailVisible = true;
     },
     },
     onCreateQRCode(row, name) {
     onCreateQRCode(row, name) {
@@ -296,22 +320,28 @@ export default {
         //     colorLight: "#ffffff",
         //     colorLight: "#ffffff",
         //     correctLevel: QRCode.CorrectLevel.H,
         //     correctLevel: QRCode.CorrectLevel.H,
         //   });
         //   });
-          let str;
-          if (name == "调查链接") {
-            let returnUrl = vaildStudentUrl()+`/#/questionnaire?o=${row.organId}&c=${row.cooperationOrganId}`;
-            // console.log(returnUrl)
-            // let tempUrl = vaildStudentUrl()+`/#/transfer?returnUrl=${encodeURIComponent(returnUrl)}`
-            str = returnUrl
-          } else if (name == "统计链接") {
-            str = vaildTeachingUrl()+`/#/questionStatistics?o=${row.organId}&c=${row.cooperationOrganId}`;
-          }
-          // vaildTeachingUrl
-          // this.qrcode.makeCode(
-          //   str +
-          //     `/#/questionnaireInfo?o=${row.organId}&c=${row.cooperationOrganId}`
-          // );
-          this.codeUrl =str;
-          this.qrcodes = true;
+        let str;
+        if (name == "调查链接") {
+          let returnUrl =
+            vaildStudentUrl() +
+            `/#/questionnaire?o=${row.organId}&c=${row.cooperationOrganId}`;
+          // console.log(returnUrl)
+          let tempUrl =
+            vaildStudentUrl() +
+            `/#/transfer?returnUrl=${encodeURIComponent(returnUrl)}`;
+          str = tempUrl;
+        } else if (name == "统计链接") {
+          str =
+            vaildTeachingUrl() +
+            `/#/questionStatistics?o=${row.organId}&c=${row.cooperationOrganId}`;
+        }
+        // vaildTeachingUrl
+        // this.qrcode.makeCode(
+        //   str +
+        //     `/#/questionnaireInfo?o=${row.organId}&c=${row.cooperationOrganId}`
+        // );
+        this.codeUrl = str;
+        this.qrcodes = true;
         // }, 100);
         // }, 100);
       }
       }
     },
     },

+ 105 - 67
src/views/reaplceMusicPlayer/modals/detail.vue

@@ -4,10 +4,10 @@
       :inline="true"
       :inline="true"
       :model="searchForm"
       :model="searchForm"
       ref="searchForm"
       ref="searchForm"
-      @submit="search"
-      @reset="onReSet"
+      @submit.native.prevent="search"
+      @reset.native.prevent="onReSet"
     >
     >
-      <el-form-item>
+      <el-form-item prop="search">
         <el-input
         <el-input
           v-model.trim="searchForm.search"
           v-model.trim="searchForm.search"
           clearable
           clearable
@@ -15,46 +15,32 @@
           placeholder="学生姓名或手机号"
           placeholder="学生姓名或手机号"
         ></el-input>
         ></el-input>
       </el-form-item>
       </el-form-item>
-      <el-form-item prop="organIdList">
+      <el-form-item prop="subjectId">
         <el-select
         <el-select
-          v-model.trim="searchForm.organIdList"
+          v-model.trim="searchForm.subjectId"
           filterable
           filterable
           clearable
           clearable
           placeholder="请选择声部"
           placeholder="请选择声部"
+          @change="changeSound"
         >
         >
           <el-option
           <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
+            v-for="(item, i) in selects.subjects"
+            :key="i"
             :label="item.name"
             :label="item.name"
             :value="item.id"
             :value="item.id"
           ></el-option>
           ></el-option>
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
-      <el-form-item prop="organIdList">
+      <el-form-item prop="brand">
         <el-select
         <el-select
-          v-model.trim="searchForm.organIdList"
+          v-model.trim="searchForm.brand"
           filterable
           filterable
           clearable
           clearable
-          placeholder="请选择品牌"
+          placeholder="请选择品牌型号"
+          :disabled="!searchForm.subjectId"
         >
         >
           <el-option
           <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <el-form-item prop="organIdList">
-        <el-select
-          v-model.trim="searchForm.organIdList"
-          filterable
-          clearable
-          placeholder="请选择型号"
-        >
-          <el-option
-            v-for="(item, index) in selects.branchs"
+            v-for="(item, index) in branchList"
             :key="index"
             :key="index"
             :label="item.name"
             :label="item.name"
             :value="item.id"
             :value="item.id"
@@ -74,33 +60,30 @@
       >
       >
         <el-table-column
         <el-table-column
           align="center"
           align="center"
-          prop="studentId"
+          prop="subjectName"
           label="声部"
           label="声部"
         ></el-table-column>
         ></el-table-column>
         <el-table-column
         <el-table-column
           align="center"
           align="center"
-          prop="studentId"
+          prop="userName"
           label="学员姓名"
           label="学员姓名"
         ></el-table-column>
         ></el-table-column>
         <el-table-column
         <el-table-column
           align="center"
           align="center"
-          prop="studentId"
+          prop="mobileNo"
           label="联系电话"
           label="联系电话"
         ></el-table-column>
         ></el-table-column>
-        <el-table-column
-          align="center"
-          prop="studentId"
-          label="品牌"
-        ></el-table-column>
-        <el-table-column
-          align="center"
-          prop="studentId"
-          label="型号"
-        ></el-table-column>
+        <el-table-column align="center" prop="studentId" label="品牌型号">
+          <template slot-scope="scope">
+            <div>{{ scope.row.brand }}{{ scope.row.specification }}</div>
+          </template>
+        </el-table-column>
         <el-table-column align="center" prop="studentId" label="操作">
         <el-table-column align="center" prop="studentId" label="操作">
           <template slot-scope="scope">
           <template slot-scope="scope">
             <div>
             <div>
-              <el-button type="text" @click="resetMusic(scope.row)">修改</el-button>
+              <el-button type="text" @click="resetMusic(scope.row)" v-if="permission('replacementInstrumentActivity/update')"
+                >修改</el-button
+              >
             </div>
             </div>
           </template>
           </template>
         </el-table-column>
         </el-table-column>
@@ -115,30 +98,40 @@
       />
       />
     </div>
     </div>
     <el-dialog
     <el-dialog
-        title="修改信息"
-        :visible.sync="dialogVisible"
-        width="1000px"
-        append-to-body v-if="dialogVisible">
-        <resetInfo @close="close"/>
-        <div slot="footer">
-            <el-button @click="dialogVisible = false">取 消</el-button>
-            <el-button type="primary" @click="dialogVisible = false">确认修改</el-button>
-        </div>
+      title="修改信息"
+      :visible.sync="dialogVisible"
+      width="600px"
+      append-to-body
+      v-if="dialogVisible"
+    >
+      <resetInfo @close="close" :detail="resetRow" ref='resetInfo' @getList='getList'/>
+      <div slot="footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="updateInfo"
+          >确认修改</el-button
+        >
+      </div>
     </el-dialog>
     </el-dialog>
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
 import pagination from "@/components/Pagination/index";
 import pagination from "@/components/Pagination/index";
-import resetInfo from './resetInfo'
+import resetInfo from "./resetInfo";
+import { getInstrumentSoundList, getInstrumentActivityList } from "../api";
+import ItemVue from "@/layout/components/Sidebar/Item.vue";
+import { permission } from "@/utils/directivePage";
 export default {
 export default {
-  components: { pagination,resetInfo },
+  components: { pagination, resetInfo },
+  props: ["detail"],
   data() {
   data() {
     return {
     return {
       searchForm: {
       searchForm: {
-        organIdList: "",
+        cooperationOrganId: "",
+        brand: "",
         search: "",
         search: "",
+        subjectId: "",
       },
       },
-      tableList: [{}],
+      tableList: [],
       rules: {
       rules: {
         // 分页规则
         // 分页规则
         limit: 10, // 限制显示条数
         limit: 10, // 限制显示条数
@@ -146,29 +139,74 @@ export default {
         total: 0, // 总条数
         total: 0, // 总条数
         page_size: [10, 20, 40, 50], // 选择限制显示条数
         page_size: [10, 20, 40, 50], // 选择限制显示条数
       },
       },
-      dialogVisible:false
+      dialogVisible: false,
+      branchList: [],
+      resetRow:null
     };
     };
   },
   },
-  mounted() {},
+  mounted() {
+    this.init();
+  },
   methods: {
   methods: {
-    init() {
+    async init() {
+      this.searchForm.cooperationOrganId = this.detail.cooperationOrganId;
+      await this.$store.dispatch("setSubjects");
       this.getList();
       this.getList();
     },
     },
-    getList() {},
+    async getList() {
+      try {
+        const res = await getInstrumentActivityList({
+          ...this.searchForm,
+          page: this.rules.page,
+          rows: this.rules.limit,
+        });
+        this.tableList = res.data.rows;
+        this.rules.total = res.data.total;
+      } catch (e) {}
+    },
     search() {
     search() {
       this.rules.page = 1;
       this.rules.page = 1;
       this.getList();
       this.getList();
     },
     },
-    onReSet(){
-        this.$refs.searchForm.resetFields();
-        this.search()
+    onReSet() {
+      this.$refs.searchForm.resetFields();
+      this.searchForm.cooperationOrganId = this.detail.cooperationOrganId;
+      this.search();
+    },
+    resetMusic(row) {
+      this.resetRow = row
+      this.dialogVisible = true;
+    },
+    close() {
+      this.dialogVisible = false;
+    },
+    async changeSound(val) {
+      this.searchForm.brand='';
+      if (val) {
+        try {
+          const res = await getInstrumentSoundList({
+            subjectId: val,
+            page: 1,
+            rows: 999,
+          });
+          this.branchList = res.data.rows.map((item) => {
+            return {
+              name: item.brand + item.specification,
+              id: item.brand,
+            };
+          });
+          console.log(res);
+        } catch (e) {
+          console.log(e);
+        }
+      }
+    },
+    updateInfo(){
+      this.$refs.resetInfo.submited()
     },
     },
-    resetMusic(row){
-        this.dialogVisible = true
+      permission(str, parent) {
+      return permission(str, parent);
     },
     },
-    close(){
-        this.dialogVisible = false
-    }
   },
   },
 };
 };
-</script>
+</script>

+ 66 - 32
src/views/reaplceMusicPlayer/modals/resetInfo.vue

@@ -1,53 +1,38 @@
 <template>
 <template>
   <div>
   <div>
-    <el-form :model="form" label-width="80px" :inline="true">
+    <el-form :model="form" label-width="80px" :inline="true" ref='form'>
       <el-form-item label="学员姓名">
       <el-form-item label="学员姓名">
-        <div style="width:180px"></div>
+        <div style="width: 180px">{{ detail.userName }}</div>
       </el-form-item>
       </el-form-item>
       <el-form-item label="联系电话">
       <el-form-item label="联系电话">
-        <div></div>
+        <div>{{ detail.mobileNo }}</div>
       </el-form-item>
       </el-form-item>
       <br />
       <br />
-      <el-form-item prop="organIdList" label="声部">
+      <el-form-item prop="subjectId" label="声部"  :rules="[{required: true, message: '请选择声部'}]">
         <el-select
         <el-select
-          v-model.trim="form.organIdList"
+          v-model.trim="form.subjectId"
           filterable
           filterable
           clearable
           clearable
           placeholder="请选择声部"
           placeholder="请选择声部"
+          @change="changeSound"
         >
         >
           <el-option
           <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
+            v-for="(item, i) in selects.subjects"
+            :key="i"
             :label="item.name"
             :label="item.name"
             :value="item.id"
             :value="item.id"
           ></el-option>
           ></el-option>
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
-      <el-form-item prop="organIdList" label="品牌">
+      <el-form-item prop="instrumentsId" label="品牌型号" :rules="[{required: true, message: '请选择品牌型号'}]">
         <el-select
         <el-select
-          v-model.trim="form.organIdList"
+          v-model.trim="form.instrumentsId"
           filterable
           filterable
           clearable
           clearable
-          placeholder="请选择品牌"
+          placeholder="请选择品牌型号"
         >
         >
           <el-option
           <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <el-form-item prop="organIdList" label="型号">
-        <el-select
-          v-model.trim="form.organIdList"
-          filterable
-          clearable
-          placeholder="请选择型号"
-        >
-          <el-option
-            v-for="(item, index) in selects.branchs"
+            v-for="(item, index) in branchList"
             :key="index"
             :key="index"
             :label="item.name"
             :label="item.name"
             :value="item.id"
             :value="item.id"
@@ -58,16 +43,65 @@
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
+import { getInstrumentSoundList,updateInstrumentActivity } from "../api";
+
 export default {
 export default {
+  props: ["detail"],
   data() {
   data() {
     return {
     return {
       form: {
       form: {
-        sound: "",
-        pinpai: "",
-        xinghao: "",
-        organIdList: "",
+        id:this.detail.id,
+        subjectId: "",
+        instrumentsId: "",
       },
       },
+      branchList: [],
     };
     };
   },
   },
+  async mounted() {
+    await this.$store.dispatch("setSubjects");
+    this.changeSound(this.detail.subjectId);
+    this.form.subjectId = this.detail.subjectId;
+    this.form.instrumentsId = this.detail.instrumentsId;
+  },
+  methods: {
+    async changeSound(val) {
+      this.form.instrumentsId = "";
+      if (val) {
+        try {
+          const res = await getInstrumentSoundList({
+            subjectId: val,
+            page: 1,
+            rows: 999,
+          });
+          this.branchList = res.data.rows.map((item) => {
+            return {
+              name: item.brand + item.specification,
+              id: item.id,
+            };
+          });
+        } catch (e) {
+          console.log(e);
+        }
+      }
+    },
+    submited(){
+      this.$refs.form.validate( async flag=>{
+        if(flag){
+          try{
+           const res = updateInstrumentActivity({...this.form})
+           this.$message.success('修改成功')
+           this.$emit('close')
+           this.$emit('getList')
+          }catch(e){
+            console.log(e)
+          }
+
+        }
+      })
+      // updateInstrumentActivity
+    },
+
+
+  },
 };
 };
-</script>
+</script>

+ 4 - 4
vue.config.js

@@ -20,8 +20,8 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.38:8000' //邹璇
 // let target = 'http://192.168.3.38:8000' //邹璇
 // let target = 'http://192.168.3.57:8000' //勇哥
 // let target = 'http://192.168.3.57:8000' //勇哥
-// let target = 'http://dev.dayaedu.com' // 开发环境
-let target = 'https://test.dayaedu.com' //测试环境
+let target = 'http://dev.dayaedu.com' // 开发环境
+// let target = 'https://test.dayaedu.com' //测试环境
 // let target = 'http://192.168.3.134' // 乔
 // let target = 'http://192.168.3.134' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
 module.exports = {
@@ -66,9 +66,9 @@ module.exports = {
       // let target = 'http://dev.dayaedu.com'
       // let target = 'http://dev.dayaedu.com'
       // 'http://dev.dayaedu.com'
       // 'http://dev.dayaedu.com'
       '/api-auth': {
       '/api-auth': {
-        // target: 'http://dev.dayaedu.com',
+        target: 'http://dev.dayaedu.com',
         // target: 'http://47.114.176.40:8000',
         // target: 'http://47.114.176.40:8000',
-        target : 'https://test.dayaedu.com',
+        // target : 'https://test.dayaedu.com',
         changeOrigin: true,
         changeOrigin: true,
         pathRewrite: {
         pathRewrite: {
           '^api-auth': ''
           '^api-auth': ''